设置 UITableView 委托和数据源时的最佳实践

Posted

技术标签:

【中文标题】设置 UITableView 委托和数据源时的最佳实践【英文标题】:Best Practice when setting UITableView delegate and datasource 【发布时间】:2013-03-06 15:48:42 【问题描述】:

我遇到了一个问题,即没有为包含 UITableView 的 UIViewController 调用 viewDidAppear 方法。事实上,tableView 数据源方法是在 viewWillAppear 之后立即调用的。我发现这样做的原因是在 viewDidLoad 方法中设置了 tableView 委托和数据源(未调用 tableView reloaddata:)。如果我将这两行代码移至 viewDidAppear 方法(并添加 tableView reloaddata:),一切正常。我有点困惑,因为我通常在 viewDidLoad 方法中设置视图委托。

有人见过这个吗?这是更大问题的征兆吗?还有一般设置委托和数据源的最佳实践吗?

任何见解将不胜感激。谢谢!

【问题讨论】:

【参考方案1】:

viewWillAppear 方法将在 UIViewController 的视图即将显示时调用。显示 UIViewController 的视图后会调用 viewDidAppear 方法。

这两个方法都会在每次你的 viewController 显示它的时候被调用(即第一次或者它被其他一些 viewController 发现)。

所以,一般来说,你应该将委托设置为 viewDidLoad 方法。

您观察到的行为绝对没问题。没有更大问题的这种症状。

【讨论】:

以上是关于设置 UITableView 委托和数据源时的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

从 prepareForSegue:sender 设置 UITableView 委托和数据源时出错:

设置数据源和委托使 UITableView 的应用程序崩溃

即使我设置了它的委托、数据源并注册了可重用单元格,UITableView 也没有被调用

未调用 UICollectionView 内部 UITableView 的委托方法

如何在视图控制器之外设置数据源和委托

将委托设置为对象