何时创建表视图?

时间:2013-07-22 17:56:16

标签: objective-c cocoa tableview

我很难理解表的时间 视图已创建。

我有两个标签视图。在第二个标签视图中,我有datasource的表 坚持表视图协议。

每当选择/单击表格数据源方法的第二个选项卡时 每次点击都会调用numberOfRowsInTableView

我正在使用xcode 4.2。

是否因为每个选项卡视图在选中选项卡时重新创建其视图?

我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:1)

  

我无法理解何时创建表格视图。

如果它在笔尖中,则在加载笔尖时创建它。

实际上,这取决于“创造”的含义。您将表视图放入Xcode中的nib时创建了它。保存时,Xcode会将该对象存档到笔尖中。

然后,在运行时,当您的应用加载nib时,Cocoa会取消归档表视图(以及nib中的其他所有内容)。 unarchiving是“创建”的时刻,之后表格视图存在于您的应用程序中。

  

每当选择/单击第二个选项卡时,每次单击都会调用表数据源方法numberOfRowsInTableView

那时表视图已经存在。它会在它变得可见时发送该消息(以及其他数据源消息),无论它是否第一次变得可见。

如果切换到其他选项卡,表格视图没有理由显示任何内容,因此在模型更新后不会感到烦恼。

如果然后切换回来,使表视图可见,现在表视图有理由显示某些内容,因此它需要知道是否有任何更改,以便它可以显示模型的当前状态。因此,它在那时重新检查其数据源。

答案 1 :(得分:-1)

这取决于TableView的内容是动态的还是静态的。如果它是动态的,则在方法tableView:cellForRowAtIndexPath:调用时创建。如果内容是静态的,则在加载视图时创建。请注意,tableView:cellForRowAtIndexPath:被调用多次,它被称为数据源项的计数。希望有所帮助:)