![](/img/trans.png)
[英]Passing data to another ViewController with a NavigationController in the way
[英]How do I instantiate navigationController while passing data to viewController?
所以我有一個tabBar
。 單擊某個選項卡會將用戶帶到嵌入在navigationController
的viewController
。 為了有navigationController
在內,我實例化viewController
使用
myViewController = [storyboard instantiateInitialViewController];
而不是
myViewController = [storyboard instantiateViewControllerWithIdentifier:@"myID"];
后面的代碼推送viewController
但沒有navigationController
這很好,直到我想將數據傳遞給實例myViewController
為止。 問題是,我無法通過引用初始viewController
(即navigationController
)的實例傳遞數據,但我可以使用直接引用myViewController
的實例來傳遞數據。 換句話說:
這是為了獲取數據(但沒有navigationController
):
viewController = [storyboard instantiateViewControllerWithIdentifier:@"experienceID"];
((ExperiencesListViewController*)viewController).experiences = self.experiences;
如果我嘗試添加數據,這會崩潰,但如果我排除設置數據,則會給我一個navigationBar
欄:
viewController = [storyboard instantiateInitialViewController];
((ExperiencesListViewController*)viewController).experiences = self.experiences;
希望我能很好地解釋這一點。 如果有什么我需要澄清的地方,請告訴我。
編輯我的第一個想法是使用prepareSegue
但在tabs
之間移動時似乎不會觸發。 另一個想法是以某種方式通過實例訪問myViewController
,但不確定如何。
那是因為該特定故事板的初始UIViewController
是UINavigationController
。
獲得您想要的 VC 的一種簡單方法是通過調用獲得這樣的UINavigationController
:
navController = [storyboard instantiateInitialViewController];
就像你所做的那樣,然后:
navController.childViewControllers[0]
這將返回該特定導航控制器的第一個 VC(當然,假設它僅包含它嵌入的 VC),這可能是您的ExperiencesListViewController
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.