1

我正在关注 BigNerdRanch iOS 编程书,并且我正在处理 UITableViewController 的这一章。然而,我一直想知道在哪里UITableViewController可以找到它的delegatedataSource. 目前我有它作为

@interface ItemsViewController : UITableViewController <UITableViewDataSource, UITableViewDelegate>

但是没有任何东西看起来像:

[self.tableView setDelegate:self]

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

4

3 回答 3

5

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

UITableViewController设置UITableView并将委托和数据源属性设置为自身。当您子类化时UITableViewController,您将免费获得此行为。

你的问题是有缺陷的,因为UITableViewController没有数据源和委托,UITableView它控制的是。是UITableViewController数据源和委托,因为它是这样设置的。

于 2012-06-03T22:59:38.587 回答
1

您可以通过 Interface Builder(在 Xcode 中)或以编程方式通过“ .delegate =”([self.tableView setDelegate: _____.datasource=在表视图对象(在 xib 或情节提要文件中)设置委托和数据源。

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

于 2012-06-03T22:41:51.063 回答
1

首先声明:

@interface ItemsViewController : UITableViewController <UITableViewDataSource, UITableViewDelegate>

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

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

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

tableview.datasource = self;
tableview.delegate = self;
于 2012-06-03T23:43:55.180 回答