2012-10-12 42 views
4

我有大約6個在prepareForSegue方法中執行相同動作的segues,但是,我想跳過這個動作來解開我的unwind segue,但是我無法弄清楚如何確定傳入的segue是否放棄了segue 。確定segue是否放鬆繼續?

任何幫助,將不勝感激。

+1

由於您自己設置了segues,爲什麼不在'prepareForSegue'中使用'if'測試來跳過額外的方法調用? –

+0

我知道要做到這一點的唯一方法是,如果我編寫一個「if」語句來檢查我想要執行的所有6個segue標識符。我寧願只是使用「如果不放鬆繼續然後等等」。據我所知,你不能將標識符設置爲展開順序,並且沒有其他方法可以確定它? –

+2

如何在IB中設置unwind segue的'identifier',然後在'prepareForSegue:'中檢查if(NO == [[segue identifier] isEqualToString:@「Unwind」])''這樣代碼只運行於非 - 慢速賽段。 –

回答

16

啊,沒關係,機器人貓有答案,這基本上是解除標誌符。我無法弄清楚如何做到這一點,直到我意識到可以從故事板左側的拉出面板中選擇segse並從那裏設置標識符。

謝謝!

+0

打我吧。很高興您在屬性檢查器中找到該字段。 –

+0

是的,我忘了我是如何做到這一點,直到我看到這個答案:-) – marsant

2

prepareForSegue僅在正向調用。當你放鬆時,它不會被調用。要處理unwind segues,需要將退出按鈕連接到以segue作爲參數的IBAction方法。這個方法將在你放鬆時被調用。

這個post有關於如何使用它們的更多細節。

+0

我剛剛測試了這一點,Becca是正確的。在上面的描述中,展開segues跳過prepareForSegue,這是一個非問題。 Thx –

+2

這隻適用於'segue.destinationViewController'。從文檔:_「無論是放鬆還是標準賽段,源場景都可以實現prepareForSegue將信息發送到目的地。」_ – Andreas

+0

確認您可以在prepareForSegue中檢查unwindSegue.identifier for unwind segues。 –

0

我自己對SWIFT很新奇。但我相信這裏有一些誤解。如果你自己添加一個展開順序,prepareForSegue被觸發。但在點擊導航欄中自動顯示的「返回」按鈕時,prepareForSegue實際上並未被觸發。