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