我在-viewDidLoad:
方法中有啓動位置管理器。同樣,當用戶移動到另一個視圖時,我需要停止它。我怎麼做?如何在UIViewController消失時停止位置管理器
我試圖阻止它在-viewDidUnload
,但它沒有奏效,因爲我認爲它只在內存不足時被調用。
我在-viewDidLoad:
方法中有啓動位置管理器。同樣,當用戶移動到另一個視圖時,我需要停止它。我怎麼做?如何在UIViewController消失時停止位置管理器
我試圖阻止它在-viewDidUnload
,但它沒有奏效,因爲我認爲它只在內存不足時被調用。
您可以使用-viewWillAppear:
和-viewWillDisappear:
來啓動和停止定位用戶,而不是-viewDidLoad
/-viewDidUnload
。可能有更好的方法來做到這一點;這是我在自己的應用程序中完成的方式。
或者,您可以註冊UIApplication
通知,例如, UIApplicationWillResignActiveNotification
,以防止用戶按下主頁按鈕時更新位置。我認爲這是Maps.app實現的行爲。
您可以在創建/顯示新UIView的方法/代碼中停止它。
UIView由故事板創建,所以我無法控制。 – user836026 2012-03-12 19:45:32
然後,您可以在UIViewController prepareForSegue中適當地啓動/停止它:sender: – 2012-03-12 19:58:05
我也嘗試viewWillDisappear,但我注意到位置更新仍在觸發。 – user836026 2012-03-12 20:10:48
「位置更新仍在觸發」,你是指狀態欄中的圖標? – Canopus 2012-03-12 20:14:25
不,我的意思是「locationManager:(CLLocationManager *)」仍然被調用。但我嘗試了其他建議「UIApplicationWillResignActiveNotification」,它的工作原理! – user836026 2012-03-12 20:19:18