在xcode中viewControllers之间的更改困难

时间:2014-12-09 15:36:49

标签: ios objective-c xcode

我有3个不同的viewControllers。第一个是主页面,您将看到许多图像缩略图。第二个控制器仅在单击图像时打开。最后一个ViewController是当用户未登录但尝试查看第二个控制器或从主控制器单击登录时打开的登录。在登录控制器中,我有一个后退按钮转到主页面。请记住,用户可以通过两种不同的方式访问登录。通过单击图像或直接单击主控制器中的登录。所以问题是后退按钮确实正常工作。当直接从主控制器访问登录页面时,后退按钮可以正常工作,将您带到主页面。但是,如果您点击任何缩略图,第二个控制器将尝试打开,但由于您未登录登录页面将显示,当您单击后退按钮将您发送到主控制器时,它不会去相反,它将重新加载相同的页面,你需要登录或退出应用程序的循环库存。任何想法为什么?

第一个ViewController标识符设置为" mainImages"。

- (IBAction)backToMain:(id)sender {

     [self dismissViewControllerAnimated:NO completion:nil];

     NSString * storyboardName = @"MainStoryboard";
     UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];
     UIViewController * MI = [storyboard instantiateViewControllerWithIdentifier:@"mainImages"];
     UINavigationController *navController = self.navigationController;

     if (navController) {
         [navController pushViewController:MI animated:NO];
     }

}

我也试过这个但没有运气:

[self dismissViewControllerAnimated:NO completion:nil];

UIViewController * MI = [self.storyboard instantiateViewControllerWithIdentifier:@"mainImages"];
[self presentViewController:MI animated:NO completion:nil];

2 个答案:

答案 0 :(得分:0)

如果您以模态呈现,请尝试此操作:

- (IBAction)backToMain:(id)sender {

    [self dismissViewControllerAnimated:NO completion:^{

    UIWindow *window = [[UIApplication sharedApplication].windows firstObject];
    UINavigationController *nav = (UINavigationController *)window.rootViewController;
    [nav popToRootViewControllerAnimated:YES];
}];


 }

答案 1 :(得分:0)

如果你需要从登录视图“返回”到任何其他视图(在这种情况下是其中2个),你应该尝试使用Modal Segue,模态segue会丢失导航控制器视图堆栈,但允许你解雇登录视图并返回上一个视图。

在第一个(或缩略图图像视图控制器)上显示您的新模态视图:

UIViewController *modalViewController = [[UIViewController alloc] init];
[self presentViewController:modalViewController animated:YES completion:nil];

然后,解雇(在登录视图控制器上):

- (IBAction)backToMain:(id)sender {
    [self dismissViewControllerAnimated:YES completion:nil];
}