簡體   English   中英

在呈現之前如何設置根視圖控制器的屬性?

[英]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.

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