[英]How to set properties of a root view controller before being presented?
我在storyboard
有一個UINavigationController
,是我從另一個視圖控制器以模態形式呈現的:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UINavigationController *myNavController = [storyboard instantiateViewControllerWithIdentifier:@"myNavController"];
[self presentViewController:myNavController animated:YES completion:nil];
此導航控制器已將另一個UIViewController
設置為storyboard
UIViewController
中的根視圖控制器。 我想在顯示該根視圖控制器之前為其設置一些屬性,但是我嘗試了以下操作:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UINavigationController *myNavController = [storyboard instantiateViewControllerWithIdentifier:@"myNavController"];
[self presentViewController:myNavController animated:YES completion:nil];
MyRootViewController *myRootViewController = [storyboard instantiateViewControllerWithIdentifier:@"myRootViewController"];
[myRootViewController setSelectedItem:selectedItem];
[myRootViewController setDelegate:self];
但是當我嘗試設置它的屬性時,似乎尚未加載根視圖控制器。
我該怎么辦? 謝謝
如果已調試,則將找到myRootViewController
制造的MyRootViewController *myRootViewController = [storyboard instantiateViewControllerWithIdentifier:@"myRootViewController"];
不是myNavController
的實際rootViewController。
此方法-instantiateViewControllerWithIdentifier:
只是給您一個全新的UIViewController實例。
因此,如果要獲取真正的rootViewController,只需將其替換為以下內容:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UINavigationController *myNavController = [storyboard instantiateViewControllerWithIdentifier:@"myNavController"];
MyRootViewController *myRootViewController = myNavController.viewControllers[0];
[myRootViewController setSelectedItem:selectedItem];
[myRootViewController setDelegate:self];
[self presentViewController:myNavController animated:YES completion:nil];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.