导航开始,所有的委托方法都设置好了,一切都按预期工作。
但是如果用户切换到另一个ViewController,而导航仍然打开,并返回到导航视图控制器,导航委托会发生一些事情,并且所有的导航委托方法都是无响应的。
我当然又试过设置了
[SKRoutingService sharedInstance].navigationDelegate = self;
甚至尝试先将它们设置为nil,然后再将它们设置为self
[SKRoutingService sharedInstance].navigationDelegate = nil;
[SKRoutingService sharedInstance].navigationDelegate = self;
但是行不通。
我的问题是:
在导航开始之后,我还能设置导航委托吗?
什么可能是ViewController"丢失"委托的一般原因?
注:我试着不设置委托给另一个视图控制器,当我在它们之间切换时(尽管我在另一个视图控制器上也有一个地图,但没有成功)。只要我通过segue到另一个来改变我的NavigationView控制器,navigationDelegate方法就会变得无响应。
好,显然这与委托无关,但事实是,我不知道我必须重新开始导航,一旦我回到屏幕导航。
当我切换到第二个屏幕时,我有另一个地图,我可以看到用户光标在移动,所以我假设导航仍然打开,因为地图是一个单例。
但最后,重新开始导航解决了这个问题
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];