【问题标题】:Xcode 9 swift 4 Dynamic reusable header for several viewControllerXcode 9 swift 4 几个viewController的动态可重用标头
【发布时间】:2018-08-30 05:57:35
【问题描述】:

我需要 5 个 viewController,它们都具有相同的标题组件。所以我不想为每个 viewController 复制相同的视图和代码。我想创建一个标题并为每个 viewController 使用标题。 问题是标题将由一个对象填充,并且该对象具有列表属性。所以我需要添加这个列表属性,比如 tableView。 What one view controller look like

我正在尝试创建一个 headerViewController 并将我的对象传递给它。我将在每个 5 个主视图控制器的容器视图中使用这个 viewController。但是高度会有所不同,所以我无法为容器视图定义高度约束。在 5 视图控制器中应该使用滚动视图,因为总高度会高于屏幕。

这有点复杂,因为我试图解决这个问题,比如一个 android 开发者:)

【问题讨论】:

  • 您可以使用 UIContainer 视图。创建一个主视图控制器并向其中添加标题,对于更改部分使用容器视图并在那里加载更改视图。
  • 您可以创建自定义 headerView 子类 UIView。创建自定义 XIB 并提供所有者作为此 headerView。在自定义 headerView 类中添加 tableview 的所有逻辑和创建,这样就不会出现重复的代码,并且易于在其他 viewcontrollers 中重用

标签: ios swift4 xcode9 reusability uicontainerview


【解决方案1】:

假设您希望tableView 中的所有项目一直显示(tableView 中不滚动)

您应该为tableViewcontainerView 添加高度限制

使用数据集tableViewHeightConstraintcontainerViewHeightConstraint 加载/重新加载tableView 后,内容大小高度为tableView

tableViewHeightConstraint.constant = tableView.contentSize.height

containerViewHeightConstraint.constant = tableView.contentSize.height

【讨论】:

    【解决方案2】:

    我已经解决了这个问题,创建了一个包含表格视图的主视图控制器。而常见的标题是一种tableviewcell。然后对于每个不同的身体部位变成了另一个tableviewcell,所以根据viewCONtroller的type属性,我正在加载相关的tableviewCell。 我在@midhun-mp 发表评论后这样做了。谢谢他。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-22
      • 1970-01-01
      • 1970-01-01
      • 2018-03-06
      • 1970-01-01
      • 2018-03-10
      • 1970-01-01
      相关资源
      最近更新 更多