我想在 map View 和 Controller 之间创建一个 segue。但是,按住 Ctrl ket 并尝试在 map View 和 Controller 之间建立连接是行不通的。我见过有人说您可以使用 performSegueWithIdentifier
以编程方式调用它,但我什至无法创建一个 segue 来为其分配标识符,以便稍后调用它。如果没有任何效果,我将创建一个隐藏按钮,进行 segue 并在 map View 单击时调用该 segue。但是,如果有一种非黑客方法,我想知道。
最佳答案
首先了解你需要什么样的segue。可能您想使用后退按钮返回到 map 。实现此目的的简单方法是将所有 VC 嵌入导航 Controller 中。我们最终会这样做。
让 ctrl+从第一个 VC 拖动到第二个 VC。确保你缩小了并且你选择的不是按钮而是整个 VC。这样我们就创建了手动转场。为标识符取一个合适的名称,因为我们稍后需要在代码中引用它。
现在让检查员如上所述设置标识符。确保你选择了两个 VC 之间的圆形 segue 东西。
然后进入第一个VC,ctrl+drag从 map 放大后设置一个 Action 。对于我的情况,我有一个名为 pop 的按钮,我将通过 Ctrl+将其拖动到实现文件来设置一个 Action 。
之后我希望用户点击 POP,如果是 map 或标记,然后触发我们创建的 segue。
代码是:
- (IBAction)pop:(id)sender {
[self performSegueWithIdentifier:@"push" sender:self];
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:@"push"]) {
//get the presenting vc here
id destionationVC=segue.destinationViewController;
//put some values to it
//destionationVC.value=2; //something;
//done
}
}
如果你现在尝试运行,你会崩溃的。因为 Push segues 需要将 UINavigationController 作为其 Root View Controller 。这样做时,我们会自动为我们实现一个后退按钮。所以选择第一个 VC,在你的例子中,MaPVC 并选择嵌入导航 Controller 。像这样,
然后运行该应用程序,在我的例子中,您可以通过单击 Pop 来继续。如果适用,可以随心所欲地使用这个概念。欢迎提问?
P.S performSegueWithIdentifier 依次调用您的 -prepareSegue 实现。如果你不实现这个方法,它会调用 UIViewControllers -prepareSegue。那是一些遗产。不管怎样,希望对您有所帮助。
关于ios - 无法从 MapKitView 转到 Controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26200654/