您好,登錄后才能下訂單哦!
storyboard中定義切換關系
在storyboard中可以添加多個控制器,并且使用連線連接多個控制器之間的切換關系。
Segue:
在storyboard中的控制器之間的連線,用來實現頁面的跳轉切換
兩種Segue:自動型、手動型,都是UIStoryboardSegue類型
屬性:
@property(nonatomic, readonly) NSString *identifier //在源控制器中所有segue中的唯一標識 @property(nonatomic, readonly) id sourceViewController //源控制器 @property(nonatomic, readonly) id destinationViewController //目的控制器
自動型Segue的使用
點擊某個控件后(如按鈕),自動執行Segue,完成界面的跳轉。
在storyboard中按住Control,直接從控件拖線到目的控制器:
segue類型選擇presentation
手動型Segue的使用
1)按住control,從源控制器拖線到目標控制器。
2)手動型Segue需要指定一個標識
3)通過代碼執行Segue,即執行跳轉動作
UIViewController的執行Segue的方法:(源控制器調用)
- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender
identifier參數:Segue的ID
sender參數:任意對象,可傳nil
值的傳遞
正向傳遞:
由于在跳轉前不能獲取segue對象的源控制,所以值的傳遞不能在performSegueWithIdentifier:前
跳轉前,源控制器會自動調用prepareForSegue:方法,重寫該方法實現值的傳遞
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
通過segue參數的identifier屬性能夠判斷是哪個segue在執行
通過segue參數的destinationViewController屬性能夠獲得目的控制器
仍然通過目的控制器添加屬性,進行數據的傳遞,
如:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ( [segue.identifier isEqualToString:@"pageOne2PageTwo"]) { AMViewControllerTwo * vc = segue.destinationViewController; vc.str = @"這是源控制器AMViewControllerOne給你的數據"; } }
逆向傳遞:
仍然使用代理設計模式,與代碼切換的逆向傳值方式相同
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。