我有一个带有表格视图的基本ui导航视图,当用户选择一个名称并按下顶部栏的下一个按钮时,它应该转到主ui导航视图,在初始设置之后它应该在主视图控制器上启动什么是最好的方法呢?....
我目前有这个:
我的最终目标是完成LoginNavController,它将“推送”到新的NavController,并且打开时总是直接进入新的NavController。我该如何以有效(和正确?)的方式做到这一点?
答案 0 :(得分: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;
}