2016-02-19 168 views
-1

早上好,我有我的應用程序通過BLE檢查連接的設備,如果設備未連接,我使用此代碼繼續設置應用程序以建立連接。設置應用程序Xcode

NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; 
    [[UIApplication sharedApplication] openURL:url]; 

然而在使用時所提供的迴應用按鈕在使用者介面上返回到所述類時,不再次觸發viewDidLoad方法!! ,問題是我如何執行相同的檢查,然後採取不同的措施。即延續到下一個場景?

問候 JZ

回答

0

您需要在該視圖控制器中聆聽UIApplicationWillEnterForegroundNotification,並在應用程序進入前景時檢查該情況。在這種情況下,應用程序轉到前臺意味着用戶從設置返回到您的應用程序,所以這是您可以檢查和執行延續的地方。

但要小心,如果此視圖控制器始終處於活動狀態,則每次應用程序進入前景時都會執行代碼。確保只有在真正需要時才顯示此視圖控制器。

+0

謝謝,我會試一試。再次感謝你的幫助。 –

+0

感謝各位的幫助,viewDidAppear不會從第二次從設置應用程序返回時觸發。關於如何聽取UIApplicationWillEnterForegroundNotification的一些幫助,來完成我的任務 –

+0

偉大的我想通了UIApplicationWillEnterForegroundNotification完美地工作.. –

1

可以使用viewDidAppear方法再次觸發它

+0

ViewDidAppear?好的,如果我把我的方法放在viewDidAppear中,它會被訪問兩次?首次啓動並從設置應用程序返回? –

+0

它應該是。每次ViewController出現在屏幕上都會被調用。但是,即使調用了ViewDidLoad,也會調用viewDidAppear!所以要小心 –

+0

'viewDidAppear'不會被調用,從'Settings'應用程序恢復視圖。 – Kanchu

1

您應該檢查從蘋果View Controller lifecycle chart,因爲這個文件在你有關於比UIViewControllerclass referenceviewDidLoad方法的詳細信息。

在此頁面上的viewDidLoad的描述應該可以幫助您:

viewDidLoad中() - 當創建視圖控制器的內容視圖(其視圖層次結構的頂部),並從故事板中加載之後調用。此方法用於初始設置。但是,由於視圖可能會因應用程序資源有限而被清除,因此不保證只會調用一次。

除了您的應用程序內存不足的特殊情況,viewDidLoad在視圖控制器生命週期中僅被調用一次。

改爲使用viewDidAppear方法,每當視圖變爲可見時(第一次出現或從應用程序設置返回時)都調用該方法。