【问题标题】:iOS Storyboard - TableView Embedded in Container with Dynamic HeightiOS 故事板 - TableView 嵌入在具有动态高度的容器中
【发布时间】:2015-11-07 21:58:58
【问题描述】:

我有一个嵌入在容器中的表格视图,它使用原型单元格,所以理论上我不知道可能有多少个单元格(实际上是 1-3 个)。此刻,我在填充的表格单元格下方得到了一堆空行。改变容器的高度可以“隐藏”这些,但这不是解决方案。

如何根据嵌入式 tableview 中的项目数改变容器高度?或者,如果有人知道是否有一些魔法“如果我的表格视图中只有 1 或 2 个项目,请不要添加任何空行”设置?

【问题讨论】:

  • 你的问题是什么?
  • 抱歉,编辑了我的问题

标签: ios xcode uitableview storyboard


【解决方案1】:

您必须根据 TableView 的 contentSize 设置带有嵌入式 TableView 的 Container 的框架。注意:根据您设置 TableView 数据源的方式,可能不会在 viewWillAppear 中设置 TableView 的 contentSize 属性。相反,您将不得不使用 ViewController 的 viewDidAppear 方法,该方法拥有您所有的 Container 视图。此外,在设置 Contatiner 视图的框架后,您可能需要在 TableView 上调用 reloadData。

【讨论】:

  • 如何设置容器的框架? CTRL + 拖动?
  • 这是您必须在代码中执行的操作。您应该有一个 UIViewController 子类,对应于包含所有容器的视图。从您的 UIViewController 子类中,您将有一个 IBOutlet 到要调整大小的容器视图。在 viewWillAppear viewDidAppear 方法中,您将 Container.frame 属性设置为 TableView 的内容大小。
  • 如何从父viewController获取tableview的高度?
【解决方案2】:

另一种选择是使用-prepareForSegue: 方法使您的父视图控制器成为表视图控制器的委托。当从表格视图中添加/删除单元格时,它可以调用父视图控制器上的方法并传递信息;然后父视图控制器可以根据该信息更改容器的大小。

https://developer.apple.com/library/ios/documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.html

【讨论】:

    猜你喜欢
    • 2015-07-16
    • 2016-03-18
    • 2016-11-23
    • 2012-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-05
    • 1970-01-01
    相关资源
    最近更新 更多