导航开始,所有委托方法都已设置,一切都按预期工作。
但是如果用户切换到另一个ViewController,当导航仍然打开并返回导航视图控制器时,导航委托会发生一些事情,并且所有导航委托方法都没有响应。
我当然尝试重新设置它们
[SKRoutingService sharedInstance].navigationDelegate = self;
甚至尝试将它们首先设置为nil然后再将它们设置为自我
[SKRoutingService sharedInstance].navigationDelegate = nil;
[SKRoutingService sharedInstance].navigationDelegate = self;
但它不起作用。
所以我的问题是:
导航开始后,我甚至可以设置导航委托吗?
ViewController“丢失”委托的一般原因是什么?
P.S。当我在它们之间切换时,我尝试不将代理设置到另一个视图控制器(即使我在另一个上也有一个地图,但没有成功)。一旦我通过segue到另一个更改我的NavigationView控制器,navigationDelegate方法就会变得无法响应。
答案 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];