2012-06-03 47 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; 
相關問題