【问题标题】:How can I reset navigation delegate, after switching between ViewControllers在 ViewController 之间切换后如何重置导航委托
【发布时间】:2015-09-17 20:07:30
【问题描述】:

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

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

我当然尝试再次设置它们

[SKRoutingService sharedInstance].navigationDelegate = self;

甚至尝试先将它们设置为 nil,然后再将它们设置为 self

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

但它不起作用。

所以我的问题是:

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

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

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

【问题讨论】:

  • 那么你不需要再设置一次,因为它必须工作也许切换不是问题在这里你能显示切换到视图控制器并返回的详细代码,以便我可以帮助你
  • 您能否在演示项目中重现此问题并将修改后的版本附加到此问题中?我们需要更多数据才能了解您的流程。

标签: ios objective-c delegates skmaps


【解决方案1】:

好吧,显然这与代表无关,但事实上我不知道我必须再次开始导航,一旦我返回到导航所在的屏幕。

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

但最后,重新开始导航并解决了问题

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];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-17
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多