ios - 为 Storyboard VC 初始化程序化 VC

标签 ios objective-c uiviewcontroller

我想在 Storyboard ViewController 中显示以编程方式创建的 ViewController。 Storyboard 的 ViewController 与“以编程方式”创建的 ViewController 属于不同的类。

我有以下类(class):

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];

因为这没有考虑 Storyboard 中的设置,我不希望这样,因为 VC 需要由 NavigationController 管理。我该如何实现?

最佳答案

听起来您有一个 UINavigationController 作为 Storyboard的入口点。您可以在应用程序启动时操作此导航 Controller ,以添加、删除或替换 View Controller 等。

例如:

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions 
{
    UIViewController* initialVc = [OnboardingViewController generateFirstDemoVC]; // or whatever

    UINavigationController* nav = (id)_window.rootViewController;
    nav.viewControllers = @[ initialVc ];

    return YES;
}

关于ios - 为 Storyboard VC 初始化程序化 VC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27161344/

相关文章:

ios - 如何在不显示 View Controller 的情况下启动它?

ios - 在 xib 文件中加载 View Controller

ios - UIImagePickerController swift 的问题

是否在括号内推送通知的 iOS 设备 token

iphone - iOS:如何检测动画何时完成?

ios - 如何计算UIViewController内部内容的高度?

iphone - 如何自定义QLPreviewController的navBar和toolbar tintColor

ios - 我的应用程序由于未捕获的异常 'NSInvalidArgumentException' 而终止

ios - 检测 UIWebView ScrollView 的 contentSize 的变化

iphone - 使用 VBO 上传后更改顶点的颜色