IOS:代码以模态方式显示登录屏幕

时间:2015-05-17 02:36:21

标签: ios login modalviewcontroller

我想用登录界面密码保护应用程序(并且首次使用加入屏幕)。关于SO的一些答案建议测试用户是否在初始屏幕的viewdidappear中登录,如果没有登录,则以模态方式显示登录屏幕。

我尝试了这个,但代码无效。有谁知道用于呈现模态视图控制器的最新代码?注意我在故事板中创建了登录屏幕并给出了故事板ID"登录"。

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    //if not logged in, modally present login screen here.

    if(![[NSUserDefaults standardUserDefaults] boolForKey:@"loggedIn"]) {
        // go to login screen
        NSLog(@"not logged in");//this fires so logic is ok
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        UIViewController *ivc = [storyboard instantiateViewControllerWithIdentifier:@"login"];//this line gives warning it is not being used
    } else {
        // go to main screen
    }
} 
/*perhaps I should call this somewhere?

- (void)presentModalViewController:(UIViewController *)modalViewController animated:(BOOL)animated
*/

1 个答案:

答案 0 :(得分:1)

归功于@rdelmar评论,你必须presentViewController:animated:completion: (presentModalViewController:animated:那个ivc。

- (void)viewDidAppear:(BOOL)animated
{
   [super viewDidAppear:animated];
   //if not logged in, modally present login screen here.

   if(![[NSUserDefaults standardUserDefaults] boolForKey:@"loggedIn"]) {
       // go to login screen
       NSLog(@"not logged in");//this fires so logic is ok
       UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
       UIViewController *ivc = [storyboard instantiateViewControllerWithIdentifier:@"login"];//LOOK AT NEXT LINE
       [self presentViewController:ivc animated:YES completion:nil]; //THIS LINE IS MISSING.
  } else {
    // go to main screen
  }
}