Cra*_*ter 5 modal-dialog viewcontroller ios segue
我有一个iOS应用程序,它具有登录视图(LognnViewController),一旦用户成功通过身份验证,它们将被带到另一个视图(DetailEntryViewController)以输入一些简单的细节.
输入详细信息后,用户将进入应用程序的主要部分,该部分由包含TabViewController各种其他视图的选项卡控制器()组成.该LogInViewController执行模式SEGUE到DetailEntryViewController和DetailEntryViewController随后进行模态SEGUE到TabViewController让我有一种模态SEGUE链将进入应用程序.当用户注销时,我想一直回到LogInViewController但是当我做一个:
[self.presentingViewController dismissModalViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)
...它弹出TabViewController,我最终回到DetailEntryViewController了第一个LogInViewController.有没有什么方法可以轻松地回到第一个视图控制器或做这个模态segue链的事情阻止我.我有一个明智的想法是将一些代码放入DetailEntryViewController viewWillAppear:如果用户已经注销,它会自动弹出,但是在viewWillAppear以下情况下不允许调用解雇模态控制器viewDidLoad:等等.
关于如何实现这一目标的任何想法?
我认为这不是实现您的应用程序的最佳结构.模态控制器应该用于暂时中断程序流程,因此使用模态来获取主要内容并不理想.我这样做的方法是让你的标签栏控制器成为窗口的根视图控制器,然后在第一个标签的控制器中,从viewDidAppear方法以模态方式显示登录控制器,这样它就会立即出现(你会看到它)除非取消选中segue属性检查器中的"动画"框,否则将显示第一个选项卡的视图.显示那个细节控制器,然后关闭两个模态控制器以返回到您的主要内容.当用户注销时,只需再次显示该登录控制器.我像这样实现这个想法.在第一个选项卡的视图控制器中:
- (void)viewDidLoad {
[super viewDidLoad];
_appStarting = YES;
}
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
if (_appStarting) {
[self performSegueWithIdentifier:@"Login" sender:self];
_appStarting = NO;
}
}
Run Code Online (Sandbox Code Playgroud)
然后在最后一个(在你的情况下为第二个)模态视图控制器,我有一个按钮方法:
-(IBAction)goBackToMain:(id)sender {
[self.view.window.rootViewController dismissViewControllerAnimated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
[self.navigationController popToRootViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2660 次 |
| 最近记录: |