在初始化时改变故事板中的UINavigationController的rootviewcontroller
我在故事板上有一个UINavigationController
控制器,它是入口点,它的类是MyNavigationController
。 我还没有从故事板上分配给UINavigationController
的rootviewcontroller
,但是想从MyNavigationController
分配相同的,从一些初始化方法请帮我怎么做,或者是不可能的?
select-1
你可以识别你的Stroryboard ID并设置为Root
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; UIViewController *rootViewController = [storyboard instantiateViewControllerWithIdentifier:@"LoginSignupVC"]; [[UIApplication sharedApplication].keyWindow setRootViewController:rootViewController]; }
select-2
初始视图控制器自动识别您的根控制器
你可以使用Attribute在你的视图控制器上识别你的Stroryboard ID
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; MyNavigationController *rootViewController = [storyboard instantiateViewControllerWithIdentifier:@"LoginSignupVC"]; [[UIApplication sharedApplication].keyWindow setRootViewController:rootViewController]; }
select-3
xcode – > Menu – > editor – > embedIn – > NavigationController
你可以得到像下面的输出
它会自动find你的根控制器
因此,如果我理解正确并且希望使用给定的视图控制器进行初始化,则可以使用UINavigationController
。
您可以在MyNavigationController
覆盖init
,并调用[super initWithRootViewController:myRootViewController]
,其中myRootViewController是UIViewController
或其子类的一个实例。
然后,您可以使用MyNavigationController
:
MyNavigationController *myNavigationController = [[MyNavigationController alloc] init];
有关更多信息,请参阅: https : //developer.apple.com/library/ios/documentation/UIKit/Reference/UINavigationController_Class/#//apple_ref/occ/instm/UINavigationController/initWithRootViewController :