原文來自:http://blog.csdn.net/fanyong245758753/article/details/50708128
一、segue分兩種:自動型和手動型,要注意的是,本文所講的都是在使用storyboard時的操作,如果使用代碼搭建界面是沒有這些segue的
這里寫圖片描述segue的屬性:這里寫圖片描述自動型:只要點(diǎn)擊控件,segue就會自動從當(dāng)前控制器界面跳轉(zhuǎn)到目標(biāo)控制器界面,不會有任何判斷這里寫圖片描述手動型:當(dāng)點(diǎn)擊源控制器的某個控件時,源控制器可以先判斷當(dāng)前狀態(tài)是否滿足(例如賬號密碼是否正確),當(dāng)滿足時可以手動執(zhí)行跳轉(zhuǎn),手動執(zhí)行跳轉(zhuǎn)的方法是:[self performSegueWithIdentifier:@"login2Contacts" sender:nil]; 1 1這里寫圖片描述二、 Scene之間的數(shù)據(jù)傳遞1、順傳這里寫圖片描述當(dāng)你從當(dāng)前 scene中觸發(fā)一個segue的時候,系統(tǒng)會自動調(diào)用PRepareForSegue:sender:這個方法。如果你想從一個界面切換到里另一個界面的時候傳遞數(shù)據(jù),你應(yīng)該override這個方法。A—》B想把數(shù)據(jù) 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:@”這是要傳遞的數(shù)據(jù)” forKey:@”data”];}}之后,Bcontroller中的data屬性,就接收到數(shù)據(jù)了。這里寫圖片描述2、逆?zhèn)鬟@里寫圖片描述①先給目的控制器設(shè)置一個代理屬性:這里寫圖片描述②再讓源控制器成為其代理:這里寫圖片描述③在目的控制器中決定何時通知代理做事情:這里寫圖片描述關(guān)于數(shù)據(jù)模型及工廠方法:這里寫圖片描述注意:使用代理傳值的關(guān)鍵這里寫圖片描述三、ViewController之間的跳轉(zhuǎn)1、如果在 Storyboard中當(dāng)前的 ViewController和要跳轉(zhuǎn)的ViewController之間的segue存在,則可以執(zhí)行performSegueWithIdentifier:sender:這個方法實(shí)現(xiàn)跳轉(zhuǎn)。2、如果目標(biāo)ViewController存在Storyboard中,但是沒有segue。你可以通過UIStoryboard的instantiateViewControllerWithIdentifier:這個方法獲取到它,這里寫圖片描述然后再用你想要的方式實(shí)現(xiàn)跳轉(zhuǎn),如:壓棧。3、如果目標(biāo)ViewController不存在,那就去創(chuàng)建它吧。新聞熱點(diǎn)
疑難解答