将UITableView链接到NSMutableArray

时间:2011-06-20 15:27:32

标签: xcode uitableview nsmutablearray datasource

这不是“请帮我调试我的代码”的消息。我实际上有它的工作,但想要更深入地了解它是如何工作的

我有一个基于视图的xCode应用程序。在我的主视图中,我有一个UITableView,我已将委托和dataSource设置为File的Owner。

在主ViewController的.h文件中,在@interface部分,我声明了一个NSMutableArray,它将包含一个自定义对象列表。

在@interface声明中,我包含了UITableViewDelegate和UITableViewDataSource协议。

稍后,在几次按钮点击之后,我的代码从服务器解析XML文件并将对象插入NSMutableArray。我将代码添加到了cellForRowAtIndexPath函数中,该函数被调用,当我为UITableView调用reloadData方法时,表格会填充从我的XML解析的结果!

非常酷,但我想了解这是怎么发生的;更好的理解将来对我有用。

我从未明确地将我的NSMutableArray绑定到该UITableView。为什么在将对象添加到数组时会调用cellForRowAtIndexPath?它是如何连接的?是因为NSMutableArray是在@interface块中声明的,它具有我上面提到的协议吗?如果我的.XIB上有两个UITableViews,那么代码如何知道应该将哪个NSMutableArray映射到哪个UITableView? (或者是我应该努力避免的事情?)即使我只在XIB上使用UITableView,如果我有两个NSMutableArrays,我是否必须关注它们以某种方式纠缠我的UITableView?

谢谢!

2 个答案:

答案 0 :(得分:1)

NSMutableArray ---在您的情况下,它是在表视图中显示的数据。当显示必须发生时,表视图使用数据源询问数据。

如何连接 - 数据源要求数据没有其他显式连接。

如何处理2个表视图 - 理想的方法是为每个表视图提供不同的数据源对象,每个对象都有自己的NSMutableArray数据。

1个表视图和2个NSMutableArray - 它留给数据源实现,根据您的需要,您可以显示任何NSMutableArray对象的数据。

为什么在将对象添加到数组时会调用cellForRowAtIndexPath? - 您可能正在调用view reloadData

答案 1 :(得分:0)

每当你调用[tableView reloadData];调用您的cellForRowAtIndexPath方法和numberOfRowsInSection。

因为UITableViewDataSource协议。 NSMutableArray和UITableView之间没有任何联系。

当一个新对象被添加到数组中之后[tableView reloadData];将被召唤。因此,现在将为数组调用cellForRowAtIndexPath方法,该数组的计数将增加1。

希望这有益于此。 :)