【发布时间】:2012-09-09 00:34:55
【问题描述】:
我用一个简单的UITableViewController 设置了一个演示应用程序,没有任何内容,但工具栏中有一个“添加”按钮。这将启动一个模态视图控制器,除了“取消”按钮之外,它又是空的。取消按钮只是告诉它的delegate(UITableViewController)关闭模式。
然后我在UITableViewController 的numberOfSectionsInTableView 方法中添加了一个NSLog 语句。
通常,当表视图控制器加载时,我会看到两个对numberOfSectionsInTableView 的调用。当我打开并关闭模式(返回到UITableViewController)时,我看不到对numberOfSectionsInTableView 的进一步调用。
但是,如果我从 numberOfSectionsInTableView 返回 0,除了显示的两个调用之外,我还会在模态关闭时看到一个额外的 numberOfSections 调用。
这仅在numberOfSectionsInTableView 返回0 时发生,并且除了提到的之外,我没有向我的项目添加任何其他代码。正如我所描述的那样,通过设置几个控制器并修改来自numberOfSectionsInTableView 的结果,这很容易验证。
我的问题:
- 为什么
UITableView在从模态视图返回时调用numberOfSectionsInTableView? - 为什么只有在
numberOfSectionsInTableView返回0时才这样做? - 除了
numberOfSectionsInTableView,UITableViewController在模态关闭时也会调用cellForRowAtIndex:。实际上,它正在尝试显示其dataSource的新内容。如果添加的第一行已经自动更新,我该如何手动为行插入设置动画?难道不应该让我来确保我的UITableView与其dataSource一致吗? -
UITableViewController检查什么属性以知道有一个或多个部分(因此询问我的代表有多少部分)?它不能是numberOfSectionsInTableView本身,因为每当我从模式返回时,我都会看到它被调用,而不仅仅是在 numberOfSections = 0 时。
【问题讨论】:
-
你能发布示例代码吗?另外我不明白你的第三和第四个问题,你能改写一下,也许提供更多的上下文?您在讨论中根本没有涉及动画。
-
我已经添加了一个演示,很快也会添加代码。我还将尝试澄清我的补充观点。感谢您清理我草率的问题。
-
代码有点长,所以我链接到我的演示项目。我还试图尽我所能澄清我的问题。我不是在寻求有关动画的建议,只是指出 tableview 将在显示时自动刷新(仅限第一行)我将没有机会自己插入行。
标签: objective-c ios uitableview