iOS開發捷徑學習(三)
Storyboard的segue
Storyboard中的segue功能強大,是頁面跳轉與互動的利器。現在就瞭解下吧。
初始化
- (instancetype)initWithIdentifier:(nullable NSString *)identifier source:(UIViewContr![QQ20180102-110901@2x.png](http://upload-images.jianshu.io/upload_images/8956555-8984f1fec64aaf57.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
oller *)source destination:(UIViewController *)destination
segue的三個引數:
identifier:唯一標識,用於標識自己
sourceViewController:來源控制器,發起跳轉的控制器
destinationViewController:目標控制器,跳轉到的控制器
瞭解完初始化,我們就再瞭解下常見Segue型別吧
Relationship Segue:
包括Navigation Controller 和 Tab Bar Controller兩種,主要用於構建導航模式和tab bar模式。
![8956555-fc566ca4c66bad54.png](https://i.iter01.com/images/1454b415b3799905b89a7fa62e3e2cd15437142aadccb68ab784a5e5e25e3114.png)
Manual Segue選項:
![8956555-20492e4d5c0db362.png](https://i.iter01.com/images/0658880ef281096f320ea4d8011f088a6f209b2442a1e50b56ad43fa199ebb1f.png)
1.Show
在segue跳轉時呼叫源控制器中的show(_:sender:)方法,該方法會呼叫targetViewController(forAction:sender:)方法,根據方法返回的VC不同,選擇不同的跳轉方式,如果返回時navigationController,那麼show會以Push的形式跳轉,返回為nil,就會以Present的形式跳轉。
2.Show Detail
會呼叫源控制中的showDetailViewController: sender:方法。一般適用於嵌入在UISplitViewController物件內的檢視控制器,分割控制器用以替換詳細控制器(DetailViewController)。
其他情況預設使用present的方式進行跳轉。
3.Present Modally
會呼叫源控制中的presentViewController: animated: completion:
有多種不同呈現方式,可根據需要設定。在iPhone中,一般以動畫的形式自下向上覆蓋整個螢幕,使用者無法與上一個檢視互動,除非關閉當前檢視;在iPad中,常見呈現為一箇中心框,中心框以動畫形式自下向上彈出,同時使底層檢視控制器變暗
4.Present as Popover
在iPad中,目標檢視以浮動窗樣式呈現,點選目標檢視以外區域,目標檢視消失;在iPhone中,預設目標檢視以模態覆蓋整個螢幕。
4. Custom
自定義跳轉方式,重寫UIStoryboardSegu子類來實現,實現perform,實現自定義跳轉過程。
Embed Segue:
一般控制器內使用此功能,內嵌UIPageViewController實現多頁面切換與管理。就是一個ViewController的View嵌入到另外一個ViewController中,也稱作childViewController。這樣的設計是一塊區域有一個單獨的ViewController,從MVC的設計模式來看,這是一個解耦合的過程,由嵌入式的ViewController來負負責一塊區域的Modol和View的協調,如果由一個ViewController來實現會造成單個ViewController過於臃腫。
Unwind Segue:
Unwind Segue,是為了應付任意跳轉的情況,即從任意一個View Controller轉場到特定的View Controller。在Nib的時代,這種工作往往通過delegate來完成。但是有了Unwind Segue以後,我們只要在需要跳轉到的這個特定的View Controller類中實現一個簽名為- (IBAction)unwindMethod:(UIStoryboardSegue *)segue這樣的方法即可(其中unwindMethod可以替換為任何你喜歡的名稱,但注意,當存在多個這樣的方法時,名稱不要相同,以免發生衝突,造成不可預料的後果)。這樣,我們就可以在任意的View Controller(除了含有這個方法本身的View Controller)通過連線Segue來實現任意View Controller跳轉到當前View Controller。不用再多寫一行程式碼,這些都可以通過Interface Builder搞定,非常方便。
相關文章
- 學習Linux是存在捷徑的Linux
- ios12捷徑怎麼用?蘋果IOS12捷徑設定使用教程iOS蘋果
- PyCharm pro在工作時的學習捷徑PyCharm
- AI 開發的捷徑:工作流模式AI模式
- 快速學Python,走個捷徑~Python
- iOS開發學習路線iOS
- iOS12的捷徑你玩過了嗎iOS
- 學習人工智慧不走捷徑,走大道的方式人工智慧
- 學習python沒有捷徑,唯有多寫,多練,多想Python
- iOS12捷徑掃碼付款怎麼用?蘋果iOS12微信支付寶掃碼支付捷徑設定教程iOS蘋果
- 學習linux到底有沒捷徑?講講我重入Linux江湖Linux
- React學習路徑快速進入AntDesignPro開發React
- 2018年Web開發者最佳學習路徑Web
- 機器學習輔助分子晶體特性預測,新材料發現可走「捷徑」機器學習
- 一元三次方的新捷徑
- 舊小區新思路,捷徑物業打造智慧社群-捷徑系統
- web前端開發入門,學習路徑以及具體的學習內容Web前端
- 杉巖:成功沒有捷徑,但雙中心資料讀寫有“捷徑”
- iOS學習筆記43 Swift(三)類iOS筆記Swift
- 機器學習沒有捷徑,根據機器學習演算法地圖學習是最有效的一種方式!機器學習演算法地圖
- 英語差能學好Python嗎?學Python有捷徑嗎?Python
- 候捷C++深入學習C++
- iOS初級開發學習筆記:APP生命週期的學習總結iOS筆記APP
- iOS學習筆記14 網路(三)WebViewiOS筆記WebView
- 服務端開發學習路徑圖,心疼小哥哥們服務端
- 後端開發學習業務三:需求分析後端
- IOS 逆向開發(三)應用簽名iOS
- iOS開發面試和底層學習影片整理合集iOS面試
- gRPC學習之三:初試GO版gRPC開發RPCGo
- 做前端也有“捷徑”,科學偷懶大法瞭解一下!前端
- 開發支付寶小程式無從下手?我們給你創造了一條捷徑
- Java的學習路徑Java
- System Design 學習路徑
- iOS SDWebImage 學習iOSWeb
- 侯捷老師C++學習路線C++
- 遊戲開發雜記(三) 開發及學習過程中的體會遊戲開發
- Web開發學習Web
- 從機器學習新手到工程師:Coursera 公開課學習路徑指南機器學習工程師
- 演算法學習->求解三角形最小路徑演算法