0

我有一个带有表格视图的基本 ui 导航视图,当用户选择一个名称并按下顶部栏下一个按钮时,它应该转到主 ui 导航视图,在此初始设置之后,它应该在主视图控制器上开始什么是最好的怎么办?......

我目前有这个: 在此处输入图像描述

我的最终目标是完成 LoginNavController,它将“推送”到新的 NavController,并且在打开时也总是直接进入新的 NavController。我如何以有效(和适当?)的方式做到这一点?

4

1 回答 1

0

我不确定你的意思

我的最终目标是完成 LoginNavController,它将“推送”到新的 NavController,并且在打开时也总是直接进入新的 NavController。我如何以有效(和适当?)的方式做到这一点?

如果您的意思是您只想显示一次登录视图,然后总是显示另一个视图控制器,那么一种可能的解决方案是使用模态 segue 到下一个导航控制器(在我的代码中由 ID modalSegue 标识片段)。一旦登录视图控制器实现了它的目标,你可以通过使用 NSUserDefaults 来保存它(这些在应用程序启动之间是持久的)。然后在登录视图控制器的viewWillAppear方法中,您可以检查相对键的值,如果已设置,则直接执行对另一个导航视图控制器的 segue。它会是这样的:

-(void)viewWillAppear:(BOOL)animated
{
    NSNumber* result = [[NSUserDefaults standardUserDefaults] valueForKey:@"isSet"];

    if(result.boolValue)
        [self performSegueWithIdentifier:@"modalSegue" sender:self];
}

并在 loginViewController 完成后设置密钥,您可以执行以下操作:

-(void) setLoginCompleted
{        
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isSet"];
}

didFinishLaunchingWithOptions:编辑:为了更流畅的用户体验,您可以直接在委托的方法中设置应用程序窗口的 rootViewController 。在这种情况下,您将执行以下操作:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    MyNavController *nav =  [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"myNavVC"];
    NSNumber* result = [[NSUserDefaults standardUserDefaults] valueForKey:@"isSet"];
    if(result.boolValue)
        [self.window setRootViewController:nav];
    return YES;
}
于 2013-05-09T15:05:31.570 回答