我可以模态呈现作为导航控制器一部分的视图控制器吗?

时间:2013-09-05 22:42:42

标签: ios cocoa-touch uinavigationcontroller segue modalviewcontroller

我有一个表视图和一个需要显示相同细节控制器的地图视图。 细节控制器当前嵌入在具有表视图的导航控制器中(我相信它仍然使用来自主 - 细节模板的自动生成的segue)。

我计划将我的地图注释转换为正确的细节控制器,但仅仅是为了测试我在MKMapView上放置了一个UIButton,并通过故事板对detailViewController进行了模态转换。

当我运行应用程序时,地图视图上的按钮不执行任何操作,也不会抛出/记录任何错误。 我知道你不必在导航控制器中以模态方式呈现视图控制器,所以我不允许以模态方式呈现属于导航控制器的视图控制器吗?

我是否需要从故事板导航控制器中取出细节控制器并手动将其推送到导航堆栈?

1 个答案:

答案 0 :(得分:1)

您可以使用编码的segue替换storyboard segues:

在每个源控制器中创建一个属性destinationVC并初始化它:

@property (nonatomic, strong)  UIViewController* dest;
self.dest = [self.storyboard instantiateViewControllerWithIdentifier:@"destinationID"];

不要忘记在storyboard中为destinationID设置标识符。

要分割模态:

[self presentModalViewController:self.dest animated:YES];

推动:

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

当你退回时,你应该小心一下目标VC。

if ([self.parentViewController.modalViewController isEqual:self]) {
   //Modal
   [self dismissModalViewControllerAnimated:YES];
} else {
   //Push
   [self.navigationController popViewControllerAnimated:YES];
}