storyboard中定義切換關(guān)系
創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供永和網(wǎng)站建設(shè)、永和做網(wǎng)站、永和網(wǎng)站設(shè)計(jì)、永和網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、永和企業(yè)網(wǎng)站模板建站服務(wù),十載永和做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
在storyboard中可以添加多個(gè)控制器,并且使用連線連接多個(gè)控制器之間的切換關(guān)系。
Segue:
在storyboard中的控制器之間的連線,用來實(shí)現(xiàn)頁面的跳轉(zhuǎn)切換
兩種Segue:自動(dòng)型、手動(dòng)型,都是UIStoryboardSegue類型
屬性:
@property(nonatomic, readonly) NSString *identifier //在源控制器中所有segue中的唯一標(biāo)識(shí) @property(nonatomic, readonly) id sourceViewController //源控制器 @property(nonatomic, readonly) id destinationViewController //目的控制器
自動(dòng)型Segue的使用
點(diǎn)擊某個(gè)控件后(如按鈕),自動(dòng)執(zhí)行Segue,完成界面的跳轉(zhuǎn)。
在storyboard中按住Control,直接從控件拖線到目的控制器:
segue類型選擇presentation
手動(dòng)型Segue的使用
1)按住control,從源控制器拖線到目標(biāo)控制器。
2)手動(dòng)型Segue需要指定一個(gè)標(biāo)識(shí)
3)通過代碼執(zhí)行Segue,即執(zhí)行跳轉(zhuǎn)動(dòng)作
UIViewController的執(zhí)行Segue的方法:(源控制器調(diào)用)
- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender
identifier參數(shù):Segue的ID
sender參數(shù):任意對(duì)象,可傳nil
值的傳遞
正向傳遞:
由于在跳轉(zhuǎn)前不能獲取segue對(duì)象的源控制,所以值的傳遞不能在performSegueWithIdentifier:前
跳轉(zhuǎn)前,源控制器會(huì)自動(dòng)調(diào)用prepareForSegue:方法,重寫該方法實(shí)現(xiàn)值的傳遞
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
通過segue參數(shù)的identifier屬性能夠判斷是哪個(gè)segue在執(zhí)行
通過segue參數(shù)的destinationViewController屬性能夠獲得目的控制器
仍然通過目的控制器添加屬性,進(jìn)行數(shù)據(jù)的傳遞,
如:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ( [segue.identifier isEqualToString:@"pageOne2PageTwo"]) { AMViewControllerTwo * vc = segue.destinationViewController; vc.str = @"這是源控制器AMViewControllerOne給你的數(shù)據(jù)"; } }
逆向傳遞:
仍然使用代理設(shè)計(jì)模式,與代碼切換的逆向傳值方式相同