原文來自:http://blog.csdn.net/fanyong245758753/article/details/50708128
一、segue分兩種:自動型和手動型,要注意的是,本文所講的都是在使用storyboard時的操作,如果使用代碼搭建界面是沒有這些segue的
這里寫圖片描述segue的屬性:這里寫圖片描述自動型:只要點擊控件,segue就會自動從當前控制器界面跳轉到目標控制器界面,不會有任何判斷這里寫圖片描述手動型:當點擊源控制器的某個控件時,源控制器可以先判斷當前狀態是否滿足(例如賬號密碼是否正確),當滿足時可以手動執行跳轉,手動執行跳轉的方法是:[self performSegueWithIdentifier:@"login2Contacts" sender:nil]; 1 1這里寫圖片描述二、 Scene之間的數據傳遞1、順傳這里寫圖片描述當你從當前 scene中觸發一個segue的時候,系統會自動調用PRepareForSegue:sender:這個方法。如果你想從一個界面切換到里另一個界面的時候傳遞數據,你應該override這個方法。A—》B想把數據 NSString A_data 從AController傳到BController,則在BController中@property 一個NSString data然后在AController中添加方法- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{NSLog(@”The segue id is %@”, segue.identifier );UIViewController *destination = segue.destinationViewController;if ([destination respondsToSelector:@selector(setData:)]){[destination setValue:@”這是要傳遞的數據” forKey:@”data”];}}之后,Bcontroller中的data屬性,就接收到數據了。這里寫圖片描述2、逆傳這里寫圖片描述①先給目的控制器設置一個代理屬性:這里寫圖片描述②再讓源控制器成為其代理:這里寫圖片描述③在目的控制器中決定何時通知代理做事情:這里寫圖片描述關于數據模型及工廠方法:這里寫圖片描述注意:使用代理傳值的關鍵這里寫圖片描述三、ViewController之間的跳轉1、如果在 Storyboard中當前的 ViewController和要跳轉的ViewController之間的segue存在,則可以執行performSegueWithIdentifier:sender:這個方法實現跳轉。2、如果目標ViewController存在Storyboard中,但是沒有segue。你可以通過UIStoryboard的instantiateViewControllerWithIdentifier:這個方法獲取到它,這里寫圖片描述然后再用你想要的方式實現跳轉,如:壓棧。3、如果目標ViewController不存在,那就去創建它吧。新聞熱點
疑難解答