2015-09-09 64 views
3

導航啓動後,用戶可以選擇在屏幕之間切換。 有兩個屏幕有兩個不同的地圖 - 一個顯示導航,另一個顯示一些POI。如何在更換屏幕後繼續導航 - Skobbler

無論何時更改屏幕,都會設置新代理,並將[SKRoutingService sharedInstance] .mapView設置爲該屏幕的地圖視圖。

一切工作正常,只發生了一件事情,我想避免它 - 當我回到初始屏幕時,導航從頭再次開始(我在iPhone 6上以模擬模式測試了這一點) 。

這發生在我設置委託

[SKRoutingService sharedInstance].routingDelegate = self; 

如果我不設置委託,在返回到主導航屏幕,導航將繼續從它的目的是位置,但所有的導航委託方法將不起作用。 但是,如果我設置了這個委託,導航將從出發點開始。

如何避免這種情況?

回答

1

目前,「導航」部分在地圖的所有實例之間共享 - 如果您在一個實例中啓動導航,您切換到另一個實例,那麼您仍然具有導航視角。如果您在一個視圖中停止它,它將在所有實例中停止。

你可以做的是切換地圖做2D和啓用平移 - 這樣你仍然可以與地圖交互(縮放到你的POI),並仍然導航。 當您開始平移地圖(開始導航之後)時,在「汽車導航UI」演示中與demo project中發生的情況類似。

+0

是的,我注意到導航將繼續在所有實例上,這很好。但問題是,當我在屏幕之間切換並設置代表時。在我將導航屏幕展開後,將routingDelegate設置爲self後,導航將從開始位置開始。如果我沒有設置這個委託,導航將繼續,因爲我希望它,但我會很容易與委託方法交互 – SteBra

0

你真的可以更好地問這個問題。一讀時很難理解這個問題。儘管如此,聽起來您正在使用第三方路由框架,並且設置該屬性具有意想不到的副作用(重新啓動導航)。爲了避免這種情況,我會一直創建一個新的對象,該對象應該是routingDelegate。然後這個對象可以通知其他需要了解路由事件的對象。這樣,您可以避免由設置routingDelegate而引發的副作用。