2012-06-03 29 views
1

我正在关注BigNerdRanch iOS编程书,我在这一章讨论了UITableViewController。我一直想知道UITableViewController在哪里发现它的delegatedataSource。目前,我有它作为UITableViewController如何知道它的数据源和委托

@interface ItemsViewController : UITableViewController <UITableViewDataSource, UITableViewDelegate>

但并没有什么,看起来像:

[self.tableView setDelegate:self]

我只是想知道的UITableViewController如何发现关于其委托和数据源

回答

5

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

UITableViewController设置UITableView并将委托和数据源属性设置为自身。当你的子类UITableViewController,你得到这个行为是免费的。

你的问题是有缺陷的,因为UITableViewController没有dataSource和委托,它控制的是UITableView。而UITableViewController是数据源和委托,因为它设置了这种方式。

1

你可以通过Interface Builder(在Xcode中)或编程方式通过在表视图对象(在xib或storyboard文件中)上设置委托和数据源210和".datasource="

请注意,您将这些事情设置在由表视图控制器管理的表视图上(即两个不同的对象)。

1

首先声明的:

@interface ItemsViewController : UITableViewController <UITableViewDataSource, UITableViewDelegate> 

只是指示你的视图控制器负责提供数据源和委托方法。 这只是一个提示(你只是说你的观点符合该协议)给查看你的代码的人,并提示Xcode你需要提供所需的协议实现(否则Xcode会给你一个警告,说明你的避难所没有实现数据源和委托方法,并且仅用于所需和非可选方法)。

您实际上是在Interface Builder中设置TableView的数据源和委托。 单击IB中的TableView,从右窗格中选择Outlets选项,然后单击数据源并拖至“文件所有者”以设置数据源。 相同的代表。

如果您在代码中创建表,你需要声明的数据源和委托自己,是这样的:

tableview.datasource = self; 
tableview.delegate = self; 
相关问题