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



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

但是如果用户切换到另一个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];

最新更新