如何在应用程序启动时以模态方式呈现View Controller?

Bri*_*any 5 objective-c ios

我创建了一个仅在我的应用首次启动时出现的屏幕; 它很棒.但是,我想在我的根视图控制器上以模态方式显示此屏幕(EditorsNoteViewController是我想在首次启动时以模态方式呈现的屏幕).有谁知道我会怎么做?这是我到目前为止:

Appdelegate.m

        - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
        {
            self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
            if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"])
            {
                NSLog(@"not first launch");

                      self.viewController = [[UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil] instantiateViewControllerWithIdentifier:@"articlesNav"];
                self.window.rootViewController = self.viewController;

            }
            else
            {
                [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];
                [[NSUserDefaults standardUserDefaults] synchronize];



                self.viewController = [[UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil] instantiateViewControllerWithIdentifier:@"articlesNav"];
                self.window.rootViewController = self.viewController;


     EditorsNoteViewController *vc = [[EditorsNoteViewController alloc]init];
             [self.viewController.navigationController presentViewController:vc animated:YES completion:nil];

}
                [self.window makeKeyAndVisible];
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

dul*_*gan 5

我发现你必须打电话

[self.window makeKeyAndVisible];
Run Code Online (Sandbox Code Playgroud)

在呈现视图控制器之前


小智 0

假设您已经在故事板中创建了 EditorsNoteViewController,您应该像这样初始化它:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
EditorsNoteViewController *vc = (EditorsNoteViewController*)[storyboard instantiateViewControllerWithIdentifier:@"EditorsNoteOrWhateverIdentifierYouChose"];
Run Code Online (Sandbox Code Playgroud)

尝试检查 RootViewController -viewDidLoad 中的 NSUserDefaults,如果是第一次,请在那里显示新的 UIViewController (这样您就不需要弄乱您的 AppDelegate)。

如果你想以动画方式呈现它,你可以在 -viewDidAppear 而不是 -viewDidLoad 中进行。