2015-04-06 62 views

回答

0

沒有反應如果使用界面生成器:

在要導航回視圖控制器的實現(.M)文件,添加此方法:

-(IBAction)prepareForUnwind<NameOfViewController>:(UIStoryboardSegue *)segue 
{ 

} 

沒有<>。然後,在界面生成器中,您正試圖從中導航,您需要創建一個退出segue。如果你有一個取消按鈕,你可以按CTRL +拖動到視圖控制器最上方的小橙色退出符號,然後釋放並選擇你創建的prepareForUnwind方法。如果您沒有專門讓您倒退的按鈕,並且想要以編程方式執行此操作,則可以按Ctrl +從視圖控制器頂部的黃色圖標拖動到橙色退出圖標,選擇展開方法,然後看看剛剛創建的segue的視圖層次結構。點擊它,然後轉到屬性檢查器並更改標識符。然後,在你從導航視圖控制器的實現文件,調用此方法:

[self performSegueWithIdentifier:@"whateverYouNamedIt" sender:self]; 

像這樣的開卷SEGUE會倒流通過你的籌碼,直到找到具有您叫回卷方法的視圖控制器,然後將所有視圖控制器彈出該視圖控制器和當前視圖控制器之間。您可以在每個視圖控制器上使用prepareForUnwind<NameOfViewController>方法,並使用它來倒退。它使故事板看起來更清晰,因爲unwind segues不會在視圖層次結構中顯示。

編輯 - 只是想補充一點,如果你想從源視圖控制器傳遞任何信息到目標視圖控制器,你在目標視圖控制器的prepareForUnwindSegue方法內部執行該操作,就像你使用prepareForSegue方法在源視圖控制器中前進。這裏有一個例子:

-(IBAction)PrepareForUnwindHome:(UIStoryboardSegue *)segue 
{ 
    OtherViewController *sourceView = segue.sourceViewController; 
    _NSStringVariable = sourceView.NSStringVariable; 
} 

這將設置NSStringVariable您從您從導航源視圖控制器導航回至NSStringVariable上一個視圖控制器。