我想在情节提要 ViewController 中显示以编程方式创建的 ViewController。情节提要的 ViewController 与"以编程方式"创建的 ViewController 属于不同的类。
我有以下课程:
ViewController (linked to storyboard scene, and implementation happens here)
OnboardingVC (all elements are created over here)
我尝试了以下方法:
-(id)initWithCoder:(NSCoder *)aDecoder{
self = [super initWithCoder:aDecoder];
if(self){
self.onboardVC = [self generateFirstDemoVC]; // returns in an instance ofOnboardingViewController
self = (ViewController*)self.onboardVC;
}
return self;
}
这(显然)崩溃了。
我不想要的是这个:
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self.window setRootViewController:self.onboardVC];
[self.window makeKeyAndVisible];
因为这没有考虑故事板中的设置,我不希望这样,因为 VC 需要由NavigationController
管理。我该如何做到这一点?
听起来你有一个UINavigationController作为故事板的入口点。 您可以在应用程序启动时操作此导航控制器,以添加、删除或替换视图控制器等。
例如:
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
UIViewController* initialVc = [OnboardingViewController generateFirstDemoVC]; // or whatever
UINavigationController* nav = (id)_window.rootViewController;
nav.viewControllers = @[ initialVc ];
return YES;
}