我有一个表视图和一个地图视图,需要显示相同的详细控制器。详细控制器当前嵌入在带有表视图的导航控制器中(我相信它仍在使用从主从模板自动生成的 segue)。
我计划让我的地图注释绑定到适当的细节控制器,但只是为了测试,我在 MKMapView 上放置了一个 UIButton,并通过情节提要对 detailViewController 进行了模式转换。
当我运行应用程序时,地图视图上的按钮不执行任何操作,也不会引发/记录任何错误。我知道您不必在导航控制器中以模式方式呈现视图控制器,那么我是否不允许以模式方式呈现作为导航控制器一部分的视图控制器?
是否需要将细节控制器从情节提要导航控制器中取出并手动将其推送到导航堆栈?
您可以将情节提要 segue 替换为编码的 segue:
在每个源控制器中创建一个属性 destinationVC 并对其进行初始化:
@property (nonatomic, strong) UIViewController* dest;
self.dest = [self.storyboard instantiateViewControllerWithIdentifier:@"destinationID"];
不要忘记在情节提要中为目标 ID 设置标识符。
要继续模态:
[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];
}