2011-12-28 98 views

回答

19

TableViewController是一個帶有內置TableView的ViewController。這將擁有需要聲明和設置的委託方法。這個VC已經是一個TableView委託和數據源。它不能調整大小。上行是易用性,下行靈活性非常有限。

TableView就是一個TableView(UIView的子類)。它可以添加到ViewController中並調整大小,與另一個基於視圖的對象一起使用等等。優點是靈活性,缺點是必須自己設置代理和數據源方法(在我看來,非常值得花時間去獲取靈活性)。

另一個需要注意的是,當使用新的Static TableView單元格(iOS5的一部分)時,必須使用TableViewController。

+0

當使用'UITableViewController'時,提示缺少調整大小/在同一屏幕上與其他控件共享'UITableView'的好處。那麼另一方面呢,我們總是可以使用'tableHeaderView'和'tableFooterView'來實現其他控件。 – Till 2011-12-28 13:16:26

+0

確實如此,但是當像做一個靜態SearchBar(不滾動)那樣的東西時,帶有TableView的VC運行良好。 – 2011-12-28 15:10:46

4

UITableViewControllerUIViewController的子類。它已經假定你將有UITableView作爲你的rootView,所以你已經可以從代碼訪問tableView(self.tableView)。它實現了UITableViewDataSourceUITableViewDelegate協議。它也爲你提供了很多方法來覆蓋。它允許你不依賴於XIB文件,因爲你已經知道你將擁有什麼(UITableView作爲rootView)。

UITableView就是UIView,通常你必須遵守,以我在爲了填充(數據源),並用它(代表)的工作在你的UIViewController上面提到的協議,你可能要創建一個IBOutlet爲您的UITableView

一方面你有速度,但你不像其他路徑那麼靈活。另一方面,你則相反。

+0

您的回答總體上正確,但以我的口味爲中心,以IB爲中心。只是爲了澄清,IBOutlets當然只有在您打算使用InterfaceBuilder佈置您的視圖時才需要。這個任務當然可以使用普通代碼完成(有時更好)。 – Till 2011-12-28 13:08:49

+0

我更喜歡在任何時候使用'InterfaceBuilder',它的速度更快,並且保持代碼清潔。當然,你可以在你的代碼中聲明一個'UITableView',並將它添加到'UIView'中,儘管我不喜歡它。 – Peres 2011-12-28 13:17:20

相關問題