ios - 无法从 MapKitView 转到 Controller

标签 ios objective-c iphone swift mapkit

我想在 map View 和 Controller 之间创建一个 segue。但是,按住 Ctrl ket 并尝试在 map View 和 Controller 之间建立连接是行不通的。我见过有人说您可以使用 performSegueWithIdentifier 以编程方式调用它,但我什至无法创建一个 segue 来为其分配标识符,以便稍后调用它。如果没有任何效果,我将创建一个隐藏按钮,进行 segue 并在 map View 单击时调用该 segue。但是,如果有一种非黑客方法,我想知道。

最佳答案

首先了解你需要什么样的segue。可能您想使用后退按钮返回到 map 。实现此目的的简单方法是将所有 VC 嵌入导航 Controller 中。我们最终会这样做。

让 ctrl+从第一个 VC 拖动到第二个 VC。确保你缩小了并且你选择的不是按钮而是整个 VC。这样我们就创建了手动转场。为标识符取一个合适的名称,因为我们稍后需要在代码中引用它。

enter image description here

现在让检查员如上所述设置标识符。确保你选择了两个 VC 之间的圆形 segue 东西。 enter image description here

然后进入第一个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 。像这样, enter image description here

然后运行该应用程序,在我的例子中,您可以通过单击 Pop 来继续。如果适用,可以随心所欲地使用这个概念。欢迎提问?

P.S performSegueWithIdentifier 依次调用您的 -prepareSegue 实现。如果你不实现这个方法,它会调用 UIViewControllers -prepareSegue。那是一些遗产。不管怎样,希望对您有所帮助。

关于ios - 无法从 MapKitView 转到 Controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26200654/

相关文章:

objective-c - 当我用 webview 显示 viewcontroller 时 SIGKILL

ios - 从另一个类调用时如何修复处理 PanGestureRecognizer 的错误?

ios - CCCrypto解密: exactly one block less

ios - 如何以编程方式使视频静音

iphone - iPhone 上相同内容的 glFlush() 时间因帧而异

ios - [CFString 发布] : message sent to deallocated instance

ios - CBPeripheralManager : Does add(_ service: CBMutableService) advertise peripheral?

ios - 想要更改 UINavigationBar 标题属性

android - react 原生 : Is it possible to have a Navigator inside a View?

iphone - TableView 无法正常工作。