ios - 设置 UITableView 委托(delegate)和数据源时的最佳实践

标签 ios uitableview uiviewcontroller

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

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

如有任何见解,我们将不胜感激。谢谢!

最佳答案

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

每次当您的 viewController 将要显示它时(即第一次或它被其他 viewController 发现),这两个方法都会被调用。

因此,通常您应该将委托(delegate)设置为 viewDidLoad 方法。

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

关于ios - 设置 UITableView 委托(delegate)和数据源时的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15251835/

相关文章:

xcode - 如何在 XCode 中创建顶部面板可折叠的 Split View?

ios - iPhone 6 和 6 Plus 媒体查询

ios - 相同的数据在 swift 4 中的 UITableView 和 UICollectionView 部分中重复

ios - 从单元格到托管对象的 keyValue 观察者

ios - 为什么这些数据没有显示在我的 Swift 3 表中

ios - UIViewController 在触摸之前加载缓慢

ios - 具有 '-' 字符的字符串在 iOS 的 drawrect 方法中未正确绘制

ios - 如何在 JSON Alamofire 请求的函数中返回正确的值?

ios - UITableViewStyleGrouped 样式的 UITableView Cell 的默认背景颜色是什么

ios - 滑动以从屏幕外移动容器 View Controller