iOS展开以查看未加载

时间:2014-04-30 08:21:00

标签: ios objective-c cocoa-touch segue stack-unwinding

我面临一个小问题:

启动应用时我有类似的东西:

(1)启动视图 - >我被记录了? - > (3)HomeView |否(2)登录视图

所以当我登录时,我会转到主视图。当我退出时,我可以放松到登录视图,因为我来自它。

但是如果我没有从登录视图传递并直接重定向到主视图,我就无法在注销时退出登录视图。

有人知道这方面的解决方案吗?

3 个答案:

答案 0 :(得分:1)

我只是把我的逻辑放在这里:
添加/添加一个viewController,例如DummyViewController作为应用的rootViewController。 在DummyViewController's viewWillAppear方法中,将逻辑设置为

- (void)viewWillAppear:(BOOL)animated 
{
    [super viewWillAppear:animated];

    if(login == YES)
    {
       //go to home screen
    }
    else
    {
      // go to login screen
    }
}

DummyViewController中,您只需要在viewWillAppear中编写代码即可。 如果您想退出,请致电

[self.navigationController popToRootViewControllerAnimated:YES]; 

viewWillAppear DummyViewController方法会根据登录状态管理您的屏幕。

答案 1 :(得分:0)

注销完成后,您可以使用NSNotificationCenter通知您的根类。然后弹出到rootViewController

如果您正在使用UINavigationController,请在NavigationController's RootViewController上显示您的登录控制器,如下所示

-(void)logoutNotification
{
logout = YES;
}

-(void)viewDidAppear:(BOOL)animated
{
    if (logout)
    {        
        AuthController * auth = [[AuthController alloc] init];

        [self presentViewController:auth animated:NO completion:^{

        }];

        logout = NO;

        auth = nil;
    }
}

答案 2 :(得分:0)

可能有点虚拟的方法,但你可以简单地加载登录视图并委托给它“我已经记录了吗?”校验。您可以隐藏或使用等待标志或其他任何内容加载...这样您在注销时就已经加载了它。

没有看到你的代码,我无法告诉你如何,但我猜逻辑就足够了。