在ViewControllers之间切换后,如何重置导航委托

时间:2015-09-17 20:07:31

标签: ios objective-c delegates skmaps

导航开始,所有委托方法都已设置,一切都按预期工作。

但是如果用户切换到另一个ViewController,当导航仍然打开并返回导航视图控制器时,导航委托会发生一些事情,并且所有导航委托方法都没有响应。

我当然尝试重新设置它们

[SKRoutingService sharedInstance].navigationDelegate = self;

甚至尝试将它们首先设置为nil然后再将它们设置为自我

[SKRoutingService sharedInstance].navigationDelegate = nil;
[SKRoutingService sharedInstance].navigationDelegate = self;

但它不起作用。

所以我的问题是:

导航开始后,我甚至可以设置导航委托吗?

ViewController“丢失”委托的一般原因是什么?

P.S。当我在它们之间切换时,我尝试不将代理设置到另一个视图控制器(即使我在另一个上也有一个地图,但没有成功)。一旦我通过segue到另一个更改我的NavigationView控制器,navigationDelegate方法就会变得无法响应。

1 个答案:

答案 0 :(得分:2)

好吧,显然它与代表们没有任何关系,但事实是我没有知道我必须再次开始导航,一旦我回到导航开启的屏幕。

当我转移到第二个屏幕时,我有另一张地图,我可以看到用户光标正在移动,所以我认为导航仍然在,因为地图是单身。

但最终,再次启动导航解决了问题

SKNavigationSettings* navSettings = [SKNavigationSettings navigationSettings];

    navSettings.navigationType=SKNavigationTypeSimulation;
    //navSettings.navigationType = SKNavigationTypeReal;

    navSettings.distanceFormat=SKDistanceFormatMilesFeet;
    navSettings.zoomLevelConfigurations = nil;
    [SKRoutingService sharedInstance].mapView.settings.displayMode = SKMapDisplayMode3D;

    [[SKRoutingService sharedInstance]startNavigationWithSettings:navSettings];