换屏后如何继续导航 - Skobbler

How to continue navigation after changing screens - Skobbler

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

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

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

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

    [SKRoutingService sharedInstance].routingDelegate = self;

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

如何避免这种情况?

你真的可以更好地问这个问题。初读很难理解题意。

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

触发的副作用

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

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