我正在关注BigNerdRanch iOS编程书,我正在讨论UITableViewController这一章。我一直想知道UITableViewController
在delegate
和dataSource
找到了什么。目前我有它
@interface ItemsViewController : UITableViewController <UITableViewDataSource, UITableViewDelegate>
但是看起来没什么:
[self.tableView setDelegate:self]
我只是想知道UITableViewController如何找到它的委托和dataSource
答案 0 :(得分:5)
如果您自己设置UITableView
,则必须将其指向代理和数据源。
UITableViewController
设置UITableView
并将delegate和dataSource属性设置为自身。当您继承UITableViewController
时,您可以免费获得此行为。
您的问题存在缺陷,因为UITableViewController
没有数据源和委托,它正在控制UITableView
。 UITableViewController
是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;