iOS:关闭模态并在主NavigationController上推送新的viewcontroller

时间:2014-08-06 08:19:58

标签: objective-c uinavigationcontroller

这是我的问题(见下图):

我有一个主屏幕(MainViewController),我从中提供了一个嵌入在导航控制器中的表单模式(ModalController)。

完成表格后,我想将结果呈现给用户并解除模态。

结果以ItemViewController显示,应该在主堆栈上推送,即在导航控制器中,如果用户按下,则返回到主屏幕。

我的问题是如何解除模态并同时推送新的视图控制器?

Problem description

我尝试了什么:

  • 关闭模态并使用完成块中的新视图控制器 self.parentViewController.navigationController pushViewController:itemViewController但只有模态被驳回。

  • 以相同的方式推动视图控制器然后关闭,也没有效果。

  • 将模态展开到主屏幕并从unwindSegue方法展开并实例化并推送新的视图控制器。不幸的是,下面的代码具有相同的效果..


- (IBAction)unwindSegue:(UIStoryboardSegue *)segue {

    ItemViewController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"ItemViewController"];

    [self.navigationController pushViewController:viewController animated:YES];

}

可能很重要 在故事板中,ItemViewController嵌入在NavigationController中,因为它定义如下图所示:

enter image description here

1 个答案:

答案 0 :(得分:2)

也许这会有所帮助:

在ItemViewController的viewDidLoad方法中:

UIImage *backButtonImage = [UIImage imageNamed:@"back.png"];
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];

[backButton setImage:backButtonImage
            forState:UIControlStateNormal];

backButton.frame = CGRectMake(0, 0, 55, 45);

[backButton addTarget:self
               action:@selector(goHome)
     forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
self.navigationItem.leftBarButtonItem = backBarButtonItem;

- (void)goHome{


NSArray *array = [self.navigationController viewControllers];

[self.navigationController popToViewController:[array objectAtIndex:0] animated:YES];


}