2012-07-16 70 views
1

衆所周知,Cocoa Touch中的表視圖是其中最細微的框架元素之一。爲了方便起見,Apple給了我們一個很好的視圖控制器類,以便將視圖的功能封裝在vc中,即UITableViewControllerObjective-C/iOS:爲自定義視圖創建UITableViewController的子類

與此同時,有時候我們希望利用表視圖的功能而不佔用整個屏幕。但是,通過繼承UITableViewController似乎沒有辦法做到這一點。相反,我必須連接桌面視圖並手動訂閱UITableViewDelegateUITableViewDataSource。如果我嘗試子類UITableViewController,我的應用程序崩潰之前,它甚至可以把視圖在屏幕上...

我的問題是,有什麼我失蹤?當子類UITableViewController,我掛鉤我的自定義表視圖到UITableViewController的tableView屬性。還有什麼我需要做的嗎?

+1

學習這樣做的正常方式(委託/數據源等)。一旦你完成了它,這很容易,而且更靈活 - 擁有很好的技能。無論如何...你自己寫了這個類還是讓xcode爲你生成了它? – Dustin 2012-07-16 16:10:32

+0

不要繼承UITableViewController。如果你需要做任何事情而不是給你(和大多數人),使用普通的UITableView並自己定製它。這真的只是用於最簡單的情況。 – Dima 2012-07-16 16:28:48

+0

請參閱:http://cocoawithlove.com/2009/03/recreating-uitableviewcontroller-to.html – petert 2012-07-16 16:44:57

回答

8

UITableViewController只增加次要便利超過UIViewController:它創建並定位表視圖,將該委託掛接&數據源(其自身,通常情況下),通過表中通過的視圖控制器editing屬性,並做了幾個有用的出現視圖時的UI位。 (詳見[文檔] [1]。)

幾乎所有上述都是A)你需要改變的東西,以便有一個非全屏的表,或B)你可以做一兩行或兩行,並且只爲你提供方便。對於這種情況,最好使用自己的UIViewController子類。

2

步驟1:子類的UIViewController代替UITableViewController

MyTableViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> 

第2步:使用Interface Builder,掉了的tableView和自定義視圖

步驟3:聲明的tableView財產IBOutletMyTableViewController頭文件並將其綁定到接口生成器中的tableView

恕我直言,這個過程會給你更多的靈活性。