在初始化时改变故事板中的UINavigationController的rootviewcontroller

我在故事板上有一个UINavigationController控制器,它是入口点,它的类是MyNavigationController 。 我还没有从故事板上分配给UINavigationControllerrootviewcontroller ,但是想从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 :