簡體   English   中英

StoryBoard的ViewController使ViewDidLoad調用兩次

[英]ViewController from StoryBoard make ViewDidLoad called twice

我想(從我的StoryBoard中)制作一個ViewController,我可以通過代碼從任何地方推送它(這個ViewController將花費很多時間,所以我不想在StoryBoard中添加大量的segues ...)。

我還必須將一些變量從當前ViewController傳遞到推送的變量。 為此,我使用以下代碼:

NBItemDetailsViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"ItemDetailsViewController"];
vc.item = self.selectedItem;
[self.navigationController pushViewController:vc animated:YES];

它幾乎可以工作,但是在推送的ViewController中,兩次調用了viewDidLoad方法。 第一次,我可以獲得項目,但是第二次,它為null。 當然,似乎顯示的ViewController是第二個調用之一,我無法獲取我的商品。

任何想法 ? 在StoryBoard中使用segues是否有更好的選擇(我無法相信沒有辦法在StoryBoard中重用ViewController ...)?

PS:我已經嘗試使用viewDidAppear。

您可以創建UIViewController (MyRegularViewController)的子類,並通過(MyRegularViewController.xib)分配.xib

File > New > File > User Interface > Empty

並將一個UIViewController拖到您的emtpy xib文件中。 將MyRegularViewController與該xib關聯,然后對其進行自定義。

現在,您可以像這樣簡單地在任何地方使用它。

MyRegularViewController *regular = [[MyRegularViewController alloc] initWithNibName:@"MyRegularViewController" bundle:nil];
self.navigationController pushViewController:regular animated:YES];

您沒有義務在所有情況下都使用情節提要,實際上,在這種情況下使用情節提要會弄亂您的情節提要。 只需為此使用一個xib和一個自定義類。

暫無
暫無

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

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