Ios 我能否以模态方式呈现作为导航控制器一部分的视图控制器?

Ios 我能否以模态方式呈现作为导航控制器一部分的视图控制器?,ios,cocoa-touch,uinavigationcontroller,segue,modalviewcontroller,Ios,Cocoa Touch,Uinavigationcontroller,Segue,Modalviewcontroller,我有一个表视图和一个地图视图,需要显示相同的细节控制器。 细节控制器目前嵌入到带有表视图的导航控制器中(我相信它仍在使用主细节模板中自动生成的segue) 我计划让我的地图注释切换到适当的细节控制器,但为了测试,我在MKMapView上放置了一个ui按钮,并通过故事板切换到detailViewController 当我运行应用程序时,地图视图上的按钮不会执行任何操作,也不会抛出/记录错误。 我知道您不必在导航控制器中以模态方式呈现视图控制器,所以我不允许以模态方式呈现作为导航控制器一部分的视图控

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

我计划让我的地图注释切换到适当的细节控制器,但为了测试,我在MKMapView上放置了一个ui按钮,并通过故事板切换到detailViewController

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


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

您可以用编码序列替换序列图像板序列:

在每个源控制器中创建属性destinationVC并对其进行初始化:

@property (nonatomic, strong)  UIViewController* dest;
self.dest = [self.storyboard instantiateViewControllerWithIdentifier:@"destinationID"];
别忘了在故事板中为destinationID设置标识符

要切换模式:

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

[self.navigationController pushViewController:self.dest animated:YES];
你回去时在目的地要小心

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

您可以将情节提要片段替换为编码片段:

在每个源控制器中创建属性destinationVC并对其进行初始化:

@property (nonatomic, strong)  UIViewController* dest;
self.dest = [self.storyboard instantiateViewControllerWithIdentifier:@"destinationID"];
别忘了在故事板中为destinationID设置标识符

要切换模式:

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

[self.navigationController pushViewController:self.dest animated:YES];
你回去时在目的地要小心

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

这并没有提到我是否可以提供一个嵌入在导航控制器中的模态控制器。而推送序列也要求父节点位于导航控制器中。(这就是我的解决方案所基于的)通常你可以在任何地方展示模态,推送只能在导航控制器上工作。但这并没有提到我是否可以展示嵌入导航控制器中的模态控制器。而推送序列也要求父节点位于导航控制器中。(这就是我的解决方案的基础)通常你可以在任何地方展示模态,推送只能在导航控制器上工作。