这是我的问题(见下图):
我有一个主屏幕(MainViewController
),我从中提供了一个嵌入在导航控制器中的表单模式(ModalController
)。
完成表格后,我想将结果呈现给用户并解除模态。
结果以ItemViewController
显示,应该在主堆栈上推送,即在导航控制器中,如果用户按下,则返回到主屏幕。
我的问题是如何解除模态并同时推送新的视图控制器?
我尝试了什么:
关闭模态并使用完成块中的新视图控制器
self.parentViewController.navigationController pushViewController:itemViewController
但只有模态被驳回。
以相同的方式推动视图控制器然后关闭,也没有效果。
将模态展开到主屏幕并从unwindSegue
方法展开并实例化并推送新的视图控制器。不幸的是,下面的代码具有相同的效果..
- (IBAction)unwindSegue:(UIStoryboardSegue *)segue {
ItemViewController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"ItemViewController"];
[self.navigationController pushViewController:viewController animated:YES];
}
可能很重要 在故事板中,ItemViewController嵌入在NavigationController中,因为它定义如下图所示:
答案 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];
}