【问题标题】:How to continue navigation after changing screens - Skobbler如何在更改屏幕后继续导航 - Skobbler
【发布时间】:2015-09-09 23:06:54
【问题描述】:

导航开始后,用户可以选择在屏幕之间切换。 有两个屏幕,有两个不同的地图 - 一个显示导航,另一个显示一些 POI。

每当屏幕发生变化时,都会设置新的代理并将 [SKRoutingService sharedInstance].mapView 设置为该屏幕的地图视图。

一切正常,只有发生的事情,我想避免它 - 当我回到初始屏幕时,导航再次从头开始(到目前为止,我在 iPhone 6 上以模拟模式测试它)。

当我设置委托时会发生这种情况

    [SKRoutingService sharedInstance].routingDelegate = self;

如果我不设置委托,在返回主导航屏幕时,导航将从预期的位置继续,但所有导航委托方法都将不起作用。 但是,如果我设置了这个委托,导航将从起点开始。

如何避免这种情况?

【问题讨论】:

    标签: ios objective-c skmaps


    【解决方案1】:

    目前,“导航”部分在地图的所有实例之间共享 - 如果您在一个实例中开始导航,然后您切换到另一个实例,那么您仍将拥有导航视角。如果您在一个视图中停止它,它将在所有实例中停止。

    您可以做的是将地图切换为 2D 并启用平移 - 这样您仍然可以与地图交互(缩放到您的 POI)并且仍然可以打开导航。 当您开始平移地图(开始导航后)时,类似于“汽车导航 UI”演示中 demo project 中发生的情况。

    【讨论】:

    • 是的,我注意到导航将在所有实例上继续,这很好。但问题是,当我在屏幕之间切换并设置代表时。在我展开 segue 到导航屏幕并将 routingDelegate 设置为 self 后,导航将从开始位置开始。如果我不设置此委托,导航将继续,但我将无法与委托方法进行交互
    【解决方案2】:

    你真的可以更好地问这个问题。初读时很难理解这个问题是关于什么的。

    话虽如此,听起来您正在使用 3rd 方路由框架,并且设置 routingDelegate 属性会产生意想不到的副作用(重新启动导航)。为了避免这种情况,我会创建一个新对象,它应该一直是routingDelegate。然后这个对象可以通知任何其他需要知道路由事件的对象。这样,您可以避免通过设置 routingDelegate 触发的副作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多