我正在使用iOS 5 SDK創建應用程序。我設法使用Storyboard的Segues推送視圖,但我找不到正確的方式來彈出當前視圖並返回到前一個視圖。使用iOS 5上的Segues/Storyboard彈出當前視圖
我沒有使用任何導航控制器(應用程序沒有任何頂部或底部酒吧)。
我不認爲使用模式或推塞格另一種方式將是解決方案,因爲它實例化一個新的控制器。
我是否必須使用自定義Segue與相反的動畫和最後刪除視圖?或者,還有更好的方法 ?
我正在使用iOS 5 SDK創建應用程序。我設法使用Storyboard的Segues推送視圖,但我找不到正確的方式來彈出當前視圖並返回到前一個視圖。使用iOS 5上的Segues/Storyboard彈出當前視圖
我沒有使用任何導航控制器(應用程序沒有任何頂部或底部酒吧)。
我不認爲使用模式或推塞格另一種方式將是解決方案,因爲它實例化一個新的控制器。
我是否必須使用自定義Segue與相反的動畫和最後刪除視圖?或者,還有更好的方法 ?
您可以嘗試從您要關閉的控制器(無論控制器是否已被按下或以模態方式顯示)呼叫[self dismissViewControllerAnimated:YES completion:nil];
。
下面是相關文檔:UIViewController Class Reference
所述呈現視圖控制器負責貶呈現的視圖控制器。如果您在呈現的視圖控制器本身上調用此方法,它會自動將該消息轉發給呈現視圖控制器。
iOS 5中的故事板不提供「無代碼」的方式從segue返回 - 這是您需要實現的東西。
如果您使用「push」segues(需要導航控制器),請使用導航控制器的popViewControllerAnimated:
方法撤銷上次推送segue。 (或其他方法來撤消多;見UINavigationController
文檔)。
如果使用「莫代爾」塞格斯,叫dismissViewControllerAnimated:completion:
其中介紹了當前視圖控制器的視圖控制器(你可以從它的presentingViewController
財產得到)上。
更新:在iOS 6中,後來有在故事板要「背」開卷塞格斯。它仍然不是一個無代碼的解決方案 - 它不應該,因爲你需要能夠做一些事情,比如區分「完成」和「取消」從模態視圖控制器退出。但它確實可以讓你將更多的應用程序的語義流程放入故事板。蘋果有tech note that describes them in detail,他們也覆蓋在the video from WWDC 2012 Session 407。
只是爲了澄清。
在被推送的類中。只需連線以下,控制器和視圖就會彈出。
[self.navigationController popViewControllerAnimated:YES];
在你的滑鼠板上創建Segue類型「自定義」。這可以來自一個按鈕。 創建一個名爲「popSegue」的新UIStoryboardSegue類 在popSegue.m文件中添加以下內容;
-(void)perform{
UIViewController *sourceViewContreoller = [self sourceViewController];
[sourceViewContreoller.navigationController popViewControllerAnimated:YES];
}
- 在故事板編輯器中。
- 選擇的SEGUE和改變Segue公司類爲 「popSegue」
- 設置標識符爲 「popSegue」
完成!
您可以在整個項目中使用相同的「popSegue」類。
希望這有助於
我也使用Xcode 5,這裏是它是如何完成的。首先,在視圖代碼文件推對方,創建.h文件的IBAction爲方法,像這樣:
- (IBAction)exitToHere:(UIStoryboardPopoverSegue *)segue sender:(id)sender;
Then in the .m file add this:
- (IBAction)exitToHere:(UIStoryboardPopoverSegue *)segue sender:(id)sender {
}
您可以添加你想在這個方法執行任何清理代碼。接下來轉到故事板並選擇推送的視圖。我假設你在視圖上有一些按鈕,用戶可以點擊顯示他已完成。點擊該按鈕,按住該鍵並拖動到作爲「退出」的視圖下方的綠色框中。鬆開鼠標鍵,但繼續按住鍵。將出現一個彈出窗口,您的方法將顯示在列表中。選擇該方法。現在,當用戶點擊按鈕時,視圖將彈出,您將返回到開始方法。
正是我需要的,謝謝。 – Jukurrpa
注意:這不會工作w /導航控制器(彈出)。 –
好極了;)。你讓我今天一整天都感覺很好 :)。謝謝 – androniennn