2010-04-19 72 views
0

我創建了一個標籤欄應用程序,並使第一個選項卡成爲表格。所以我創建了一個tableView控制器,並將第一個選項卡的視圖控制器的類標識設置爲我的tableView控制器。問題與顯示覆合視圖的標籤欄視圖

這工作正常,我看到表中的內容填滿整個屏幕。

然而,這並不是我真正想要的最終目標 - 我想有一個複合窗多個視圖: - 上述表 - 數據在它

所以我做的一個自定義視圖爲此內容創建一個筆尖(將其稱爲contentNib),將tab的類從tableView控制器更改爲通用UIViewController,並將該選項卡的筆尖設置爲這個新的contentNib。

在這個新的contentNib中,拖動一個tableView並將File's Owner設置爲TableViewController。然後我將dataSource和委託鏈接到文件的所有者(即TableViewController)。

令人驚訝的,這並不工作,我收到錯誤消息:

**Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UIViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x3b0f910'** 

,因爲文件的所有者這是撲朔迷離我是TableViewController,已被指定爲這兩個數據源和委託。是否有人對我的混淆有深入的瞭解,或者鏈接到如何讓複合視圖包含tableView的示例?

***** update ****我在Apple TableView編程指南中看到這一點: 「注意:如果要查看視圖,您應該使用UIViewController子類而不是UITableViewController的子類來管理表視圖託管由多個子視圖組成,其中一個是表視圖UITableViewController類的默認行爲是使表視圖填充導航欄和標籤欄(如果存在)之間的屏幕。「* < -----我真的不明白這是告訴我要做什麼,但如果有人能夠解釋或指出我的例子,我會非常感激!

回答

0

文件的所有者應該是您實例化的類。例如,在您的contentNib文件中,您應該分配並初始化一個表視圖,並將@「contentNib」作爲參數傳遞給initWithNibNamed:bundle :.這聽起來像你沒有這樣做,因爲文件的所有者,而在IB設置爲一個UITableViewController,實際上只是一個UIViewController。

IB中的設置只是爲了讓IB知道什麼網點和操作可用;你有責任提供適當的對象。

+0

謝謝本。我對IB有許多小混混,你幫助清除了其中的一個。 – ambertch 2010-04-22 03:20:20