模态视图不会从子控制器触发

Modal view does not fire from child controller

我的 MainViewController 以模态方式加载另一个视图。

@implementation MainViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *uiViewController = [storyboard instantiateViewControllerWithIdentifier:@"splashViewController"];
    [uiViewController setModalPresentationStyle:UIModalPresentationCustom];
    [uiViewController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
    [self presentViewController:uiViewController animated:YES completion:nil];
}

当我直接从 AppDelegate 加载 MainViewController 时,模式视图被加载。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    UIViewController *rootController = [[RootViewController alloc] init];
    navigationController = [[UINavigationController alloc] initWithRootViewController:rootController];
    [navigationController setNavigationBarHidden:true];

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    [self.window setRootViewController:navigationController];
    [self.window makeKeyAndVisible];
    return YES;
}

如果我将 MainViewController 作为另一个控制器的子控制器加载,则模态视图无法加载。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    self.drawerViewController.leftViewController = self.leftDrawerViewController;
    self.drawerViewController.centerViewController = self.mainViewController;
    self.drawerViewController.animator = self.drawerAnimator;

    UIViewController *rootController = self.drawerViewController;
    navigationController = [[UINavigationController alloc] initWithRootViewController:rootController];
    [navigationController setNavigationBarHidden:true];

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    [self.window setRootViewController:navigationController];
    [self.window makeKeyAndVisible];
    return YES;
}

主视图仍在加载。只是没有创建模态视图。

是什么导致了这个问题,我该如何解决?

您不应该通过 viewDidLoad 方法呈现另一个视图控制器,

到那时,当前视图尚未完成其视图层次结构更改,

您可以在调用 viewDidAppear 后显示新的 viewcontroller, 所以你可以将该代码移动到 viewDidAppear