【问题标题】:How to convert static UITableView to dynamic TableView如何将静态 UITableView 转换为动态 TableView
【发布时间】:2014-01-23 11:39:25
【问题描述】:

我有一个静态的 TableView,现在需要变成一个动态的 TableView,因为其他视图需要放置在 ViewController 周围,而在我的情况下,这不能使用容器来完成。

问题是:如何有效地将表格视图从静态转换为动态?

我知道必须将继承从 UITableView 更改为 UIViewController 并添加 plus 委托方法。

但是所有的表格部分怎么样:我在静态表格中有 3 个部分和 6 种类型的单元格。我真的需要为所有这些单元格类型子类化 UITableViewCell 并手动处理所有内容,还是有更聪明的方法来做到这一点?

【问题讨论】:

  • 您只需要更改数据源并向表格视图发送reloadData 消息即可。有什么问题?
  • @Desdenova 在 Storyboard 中将 TableViews 内容类型从静态更改为动态后,我会松开 TableView 中的所有部分(第一个部分除外)
  • 为什么现在需要让tableview动态化?重点是什么?如果您选择使您的表格动态化,那么您只需在数组/字典中硬编码您的数据并编写样板代码来填充表格视图。在这种情况下,我认为静态是更好的选择。
  • 您可以在storyboard中调整静态tableview的大小,以便放置其他视图。
  • @brainray 啊,您说的是单元格而不是 tableview 本身。我认为你应该改写你的问题。

标签: ios uitableview uicontainerview


【解决方案1】:

你真的不能只在两者之间转换。通过仅仅实现一些表委托方法,比如 cellForRowAtIndexPath:,你会丢失你的静态内容。话虽如此,该表应该始终是动态的。这样,您可以定义逻辑来确定它应该显示您最初静态添加的内容还是新的动态内容。

此外,您不需要视图控制器来实现委托/数据源方法。如果您已经有UITableView 的子类,那很好。您可以将其设置为自己的委托/数据源,并在子类中实现这些方法。

要回答您的最后一个问题,不,真的没有更好的方法可以做到这一点。我建议您创建一个基类,将UITableViewCell 子类化为实现单元将共享的所有内容,然后在此基类的子类中实现单独的更改。在表格视图中使用多个单元格子类听起来要糟糕得多。

【讨论】:

  • 好吧,看来我得走了……顺便说一句:我确实需要一个 UIViewController 才能将 TableView 放置在我想要的任何位置(在这种情况下使用容器不起作用如上面的评论所述)
  • 好吧,从完全成熟的静态 TableView 中执行此操作比恕我直言听起来更糟糕。 Apple 应该给我们一种在 ViewController 中使用静态电视的方法......
  • @brainray 您实际上可以这样做。在 Interface Builder 中向视图控制器添加一个表,选择它,然后导航到属性检查器。顶部的第一个下拉菜单允许您在“静态单元”和“动态原型”之间进行切换
  • 谢谢,我不知道这一点。但是,我不确定这是否适用于多个部分?
  • @brainray 确实如此。默认情况下只有一个,但您可以在属性中增加它或复制粘贴默认部分。
猜你喜欢
  • 2011-02-04
  • 2013-04-11
  • 2013-05-14
  • 2017-09-22
  • 2011-02-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 2013-06-24
相关资源
最近更新 更多