Instantiating a Swift ViewController in an Objecti

2019-08-10 22:23发布

问题:

I've imported a Swift UIViewController in an Objective-C-based project and I've followed

  • Apple's guide to using Swift Classes in Objective-C

and

  • This useful step-by-step Swift integration for Xcode Objc-based projects

My project doesn't crash, but I can't get a view to load. I'm attempting to instantiate a viewController, but it shows up as a white blank screen:

UIViewController *rootViewController = [storyboard instantiateViewControllerWithIdentifier:@"mySwiftVC"];

I put a breakpoint in immediately after the prior line and po rootViewController gives a memory address.

I threw a println in the viewDidLoad of MySwiftVC, but nothing comes up. All the lights "are on", but nothing displays/executes. Any ideas where to look for resolution?

Here's the method where the prior line was called:

- (void)checkDisclaimer {
    UIStoryboard *storyboard = self.window.rootViewController.storyboard;

    if ([[[NSUserDefaults standardUserDefaults]valueForKey:@"disclaimerAcknowledged"]boolValue] == NO) {
        // set to instantiate disclaimer VC
        UIViewController *rootViewController = [storyboard instantiateViewControllerWithIdentifier:@"disclaimer"];
        self.window.rootViewController = rootViewController;
        NSLog(@"Disclaimer IS NOT acknowledged");
    } else {
// this is the line that's working from a memory standpoint, but nothing happens
        UIViewController *rootViewController = [storyboard instantiateViewControllerWithIdentifier:@"launchScreen"];
        self.window.rootViewController = rootViewController;
        NSLog(@"Disclaimer IS acknowledged");
    }
    [self.window makeKeyAndVisible];

}