簡體   English   中英

以編程方式添加tableView,未調用viewDidLoad

[英]Programatically adding a tableView, viewDidLoad not called

我想在我的tableViewController中使用viewDidLoad函數。 如何使viewDidLoad在控制器中運行?

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

從Apple文檔中:

視圖控制器將其視圖層次結構加載到內存后,將調用此方法。 無論是從nib文件加載視圖層次結構還是在loadView方法中以編程方式創建視圖層次結構, 都將調用此方法 通常,您可以重寫此方法以對從nib文件加載的視圖執行其他初始化。

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

如果您無法在情節提要或Nib文件中定義視圖,請重寫loadView方法以手動實例化視圖層次結構並將其分配給view屬性。

當實際加載視圖時,將調用viewDidLoad ,這將您呈現視圖控制器之后發生,例如:

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

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

  3. 模態呈現。

這是代碼中缺少的部分。 如果您解釋了如何介紹視圖控制器,我可能會提供進一步的幫助。 另外,請看一下: 呈現視圖控制器

(我假設您試圖覆蓋表視圖控制器的view屬性只是為了“使事情工作”,但是您不需要為此做任何事情,視圖控制器將正確設置為里面的表格視圖)。

tableViewController = [[TableViewController alloc] init];
tableViewController.tableView // This is your newly generated tableview

將tableView分配給另一個父視圖后,將調用viewDidLoad

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM