2012-10-09 59 views
0

我想在我的tableViewController中使用我的viewDidLoad函數。 如何讓viewDidLoad在我的控制器中運行?以編程方式添加tableView,viewDidLoad不叫

tableViewController = [[TableViewController alloc] init]; 
UITableView *tableView = [[UITableView alloc] init]; 
tableViewController.view = tableView; 
.... 
+1

這是絕對錯誤的,你不能添加一個表視圖到UITableViewController,它已經有一個表視圖init – Charan

+1

如果你分配一些'UIView'到'[UIViewController視圖]','viewDidLoad'永遠不會被調用,因爲視圖已經創建。 – Sulthan

回答

2

從蘋果文檔:

視圖控制器加載其視圖層次到內存中後,此方法被調用。不管視圖層次結構是從nib文件加載還是以編程方式在loadView方法中創建,都會調用此方法。您通常重寫此方法以對從nib文件加載的視圖執行額外的初始化。

因此,您可以嘗試從NIB實例化它或覆蓋loadView方法。從蘋果文檔的另一個步驟:

如果您不能定義在故事板或筆尖文件的意見,覆蓋的loadView方法來手動創建一個視圖層次,並將其分配給視圖屬性。

1

viewDidLoad視圖時加載的時候被調用,這將後發生您出示您的視圖控制器,通過例如:

  1. 將其添加到導航控制器,

  2. 將其添加到標籤欄控制器,

  3. 以模態方式呈現它。

這是代碼中的缺失位。如果你解釋你想如何呈現你的視圖控制器,我可能會進一步提供幫助。另外,看看這個:Presenting View Controllers。 (我假設你試圖覆蓋你的表視圖控制器的view屬性只是一個嘗試「讓事情工作」 - 但你不需要做任何事情,視圖控制器將是正確設置了一個表格視圖)。

+0

我這樣做了,這樣我就可以設置委託和數據源成爲我的班級。 tableView.delegate = self; tableView.dataSource = self; – Ted

+0

你可以在你的'TableViewController'' viewDidLoad'方法中做到這一點,而不需要分配一個新的'UITableView'。您只需要適當地呈現表格控制器... – sergio

相關問題