2015年1月21日 星期三

偵測 back button 被按下時(還沒整理完@@)

整理了一些我在網路上找到關於偵測返回鍵被按下的方法,以及每個方法的盲點,的 Bug。

這兩個方法語法上最直覺,但不知道為什麼當 push 進入這個 view 的時候,這兩個方法也會被呼叫,所以裡面還要再加一個判別式 if (!parent)。但是這個方法沒辦法辨別是按下返回鍵還是使用 unwind segue。




下面這三個方法都是在 viewWillDisappear 裡面再加判別式


這個方法有個盲點,如果 push 往下一個 view 也會觸發。

最保險的方法就是自訂一個返回鍵,這樣就可以百分之百確定是「返回鍵被按下」時所觸發事件。不過這個方法有個缺點,自訂的按鈕會沒有系統預設的返回鍵的那個箭頭。


結論
每個方法都有各自的 Bug,不過應該每次要用的情況都不一樣,所以只要挑選適合自己的方法就可以了。

資料來源:
http://stackoverflow.com/questions/5217992/back-button-callback-in-navigationcontroller-in-ios
http://stackoverflow.com/questions/8228411/detecting-when-the-back-button-is-pressed-on-a-navbar
http://stackoverflow.com/questions/1214965/setting-action-for-back-button-in-navigation-controller
http://stackoverflow.com/questions/6091867/find-out-if-user-pressed-the-back-button-in-uinavigationcontroller
http://stackoverflow.com/questions/18824186/trying-to-handle-back-navigation-button-action-in-ios