UITableViewController如何知道其dataSource和委托

时间:2012-06-03 22:36:43

标签: ios ios5 uitableview

我正在关注BigNerdRanch iOS编程书,我正在讨论UITableViewController这一章。我一直想知道UITableViewControllerdelegatedataSource找到了什么。目前我有它

@interface ItemsViewController : UITableViewController <UITableViewDataSource, UITableViewDelegate>

但是看起来没什么:

[self.tableView setDelegate:self]

我只是想知道UITableViewController如何找到它的委托和dataSource

3 个答案:

答案 0 :(得分:5)

如果您自己设置UITableView,则必须将其指向代理和数据源。

UITableViewController设置UITableView并将delegate和dataSource属性设置为自身。当您继承UITableViewController时,您可以免费获得此行为。

您的问题存在缺陷,因为UITableViewController没有数据源和委托,它正在控制UITableViewUITableViewController是dataSource和delegate,因为它以这种方式设置。

答案 1 :(得分:1)

您可以通过Interface Builder(在Xcode中)或以编程方式,通过".delegate =" ([self.tableView setDelegate: _____)".datasource="在表视图对象(在xib或storyboard文件中)设置委托和dataSource。

注意,您要在表视图控制器管理的表视图上设置这些内容(即两个不同的对象)。

答案 2 :(得分:1)

首先是声明:

@interface ItemsViewController : UITableViewController <UITableViewDataSource, UITableViewDelegate>

仅表示您的View Controller负责提供DataSource和Delegate方法。 这只是一个暗示(你只是说你的观点符合那些协议)给某人查看你的代码和Xcode的提示,你需要提供所需的协议实现(否则Xcode会给你一个警告你没有' t实现了数据源和委托方法,并且仅用于必需而非可选的方法。)

您实际上是在Interface Builder中设置TableView的数据源和委托。 单击IB中的TableView,从右窗格中选择Outlets选项,然后单击datasource并拖动到“File's Owner”以设置数据源。 代表也一样。

如果要在代码中创建表,则需要声明数据源并以这种方式委派自己:

tableview.datasource = self;
tableview.delegate = self;