展開細分與前進細分不同,這使得支持後續功能非常簡單。
在創建展開segue之前,您需要向視圖控制器添加一個方法,以便將其展開。例如 -
- (IBAction)unwindFromLogin:(UIStoryboardSegue*)sender {
}
(如果要觸發與performSegueWithIdentifier
開卷或場景中的UIViewController對象),並在退出圖標即可創建按Ctrl拖動場景中的物體之間的開卷SEGUE屏幕的底部。然後界面生成器將顯示它找到的符合上述簽名的方法列表(因此它將顯示unwindFromLogin:
)。你可以給這個segue一個標識符,這樣你可以像平常一樣用performSegueWithIdentifier
來調用它。到現在爲止還挺好。
現在,爲聰明的一點。在運行時,調用unwind segue時,iOS將通過當前視圖控制器堆棧查找實現指定方法的第一個視圖控制器 - 因此,如果在每個視圖控制器中實現相同的unwindFromLogin:
方法,則您的登錄視圖將展開爲它來自的視圖控制器,你只需要在你的登錄視圖控制器場景中放置一個簡單的細節。
Apple有一個很好的Tech Note,它更詳細地描述了展開過程,以及如何通過在UIViewController
子類中實現其他方法來定製它,但默認實現應該適合您的需求。
如果你不想創建從每個源視圖控制器登錄視圖控制器賽格瑞你可以直接使用類似目前它 -
LoginViewController *loginVC=(LoginViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"loginVC"];
[self presentViewController:loginVC animated:YES completion:nil];
你仍然可以使用回捲SEGUE找回
謝謝你們的全面解答。謎題仍然缺少的是,我如何實現從每個屏幕到登錄屏幕的導航?我是否必須從每個場景向登錄場景建立IB連線,還是有一種更容易的,程序化的方式將這種行爲構建到場景中? – 2015-01-20 22:05:58