我遇到了一个问题,即没有为包含 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/