在 ViewController 之间切换后,如何重置导航委托
How can I reset navigation delegate, after switching between ViewControllers
导航开始,所有委托方法都已设置并且一切正常。
但是如果用户切换到另一个 ViewController,而导航仍然打开,并且 returns 到导航视图控制器,导航委托会发生一些事情,所有导航委托方法都没有响应.
我当然试过重新设置它们
[SKRoutingService sharedInstance].navigationDelegate = self;
甚至尝试先将它们设置为 nil,然后再次将它们设置为 self
[SKRoutingService sharedInstance].navigationDelegate = nil;
[SKRoutingService sharedInstance].navigationDelegate = self;
但是不行。
所以我的问题是:
我什至可以在导航开始后设置导航代理吗?
ViewController "loosing" 委托的一般原因是什么?
P.S。当我在它们之间切换时,我尝试不将委托设置到另一个视图控制器(即使我在另一个视图控制器上也有一张地图,但没有成功)。一旦我通过切换到另一个控制器来更改我的 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];
导航开始,所有委托方法都已设置并且一切正常。
但是如果用户切换到另一个 ViewController,而导航仍然打开,并且 returns 到导航视图控制器,导航委托会发生一些事情,所有导航委托方法都没有响应.
我当然试过重新设置它们
[SKRoutingService sharedInstance].navigationDelegate = self;
甚至尝试先将它们设置为 nil,然后再次将它们设置为 self
[SKRoutingService sharedInstance].navigationDelegate = nil;
[SKRoutingService sharedInstance].navigationDelegate = self;
但是不行。
所以我的问题是:
我什至可以在导航开始后设置导航代理吗?
ViewController "loosing" 委托的一般原因是什么?
P.S。当我在它们之间切换时,我尝试不将委托设置到另一个视图控制器(即使我在另一个视图控制器上也有一张地图,但没有成功)。一旦我通过切换到另一个控制器来更改我的 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];