2011-03-08 28 views
0

我有一個XIB文件,其中有幾個UI元素。生成的視圖由我自己的從UIViewController派生的類來控制。這一個工作正常,並調用viewDidLoad,當XIB文件從主應用程序委託加載等。viewDidLoad不需要從XIB文件加載UITableView

但是,在那個XIB文件中,我也有(顯然)一些子視圖。其中之一是一個UITableView。那個由UITableViewController派生的自定義類來控制。我已經設置了委託,數據源出口在一邊,UITableViewController也得到了正確的視圖屬性集。但是,在加載周圍視圖時,不會調用UITableViewController的viewDidLoad。

我認爲這是因爲主UIView/UIViewController對並不真正瞭解子視圖。在UIViewController viewDidLoad中,我可以調用子視圖的viewDidLoad。不過,我懷疑這不是預期的用法。那麼我該怎麼做呢?

我假設的是,從xib文件加載的子視圖都獲得viewDidLoad消息。

回答

2

你是對的,你不應該調用子視圖的viewDidLoad:方法,因爲它應該總是在視圖加載時調用(不管視圖是如何創建的)。從文檔:

無論視圖是存儲在nib文件中還是以編程方式在loadView方法中創建,都會調用此方法。

這向我建議在你的.xib文件中沒有正確設置某些東西(連接?),或者控制器沒有正確鏈接到它們的視圖。當你說UITableViewController具有正確的視圖集時,你是使用「view」屬性而不是UITableViewController的「tableView」屬性......?

+0

嗯,在IB我只能看到我派生類的視圖屬性。但你是對的!我可能應該使用tableView來代替。我會檢查那一個去哪裏... – Arne 2011-03-08 15:27:34

+0

嗯,奇怪。我在IB獲得的唯一渠道是SearchController和view,對於從UITableViewController派生的類... – Arne 2011-03-08 15:30:47

+0

也許這會有所幫助。 http://stackoverflow.com/questions/2265029/how-do-i-add-an-uiview-above-a-tableviewcontroller – 2011-03-08 15:46:54