viewController
MVC架構(gòu)(Model—View—Controller)是弱耦合思想的衍生產(chǎn)物
UIViewController
它是IOS里面的一個類,是UI和DATA之間的橋梁
更多的時候它是一套API
用來管理view
的controller
管理view
以下的一些操作
- 傳遞數(shù)據(jù)
- 響應用戶操作
- 內(nèi)存管理屎勘、狀態(tài)保持
- 適應設(shè)備
ViewController
是一個View
控制器,他是一個輕量級的類
而View
是圖形界面仲吏,會比較龐大,加載起來也會比較消耗資源
然后蝌焚,ViewController
就會控制界面在被觸發(fā)時才加載
主要的應用程序windows
通過MakeKayAndVisi
加載
每一個獨立的場景就應該是一個ViewController
可以用如下代碼寫一個viewcontroller
-[presentViewController:(要顯示的VIEW 一般寫self) animated:(YES/NO)completion:nil]
彈出模式
彈出模態(tài)ViewController是iOS變成中很有用的一個技術(shù)裹唆,UIKit提供的一些專門用于模態(tài)顯示的ViewController,如UIImagePickerController等只洒。彈出模態(tài)ViewController主要使用于以下這幾種情形:
1许帐、收集用戶輸入信息
2、臨時呈現(xiàn)一些內(nèi)容
3毕谴、臨時改變工作模式
4成畦、相應設(shè)備方向變化(用于針對不同方向分別是想兩個ViewController的情況)
5、顯示一個新的view層級
這幾種情形都會暫時中斷程序正常的執(zhí)行流程析珊,主要作用是收集或者顯示一些信息。
通過設(shè)置
presenting VC
的modalPresentationStyle
屬性蔑穴,我們可以設(shè)置彈出View Controller
時的類型忠寻,有以下四種類型,定義如下:
<pre><code>typedef enum{
UIModalPresentationFullScreen = 0,
UIModalPresentationPageSheet,
UIModalPresentationFormSheet,
UIModalPresentationCurrentContext,
} UIModalPresentationStyle;
</pre></code>
UIModalPresentationFullScreen
代表彈出VC時存和,presented VC
充滿全屏奕剃,如果彈出VC的wantsFullScreenLayout
設(shè)置為YES的衷旅,則會填充到狀態(tài)欄下邊,否則不會填充到狀態(tài)欄之下纵朋。
UIModalPresentationPageSheet
代表彈出是彈出VC時柿顶,presented VC
的高度和當前屏幕高度相同,寬度和豎屏模式下屏幕寬度相同操软,剩余未覆蓋區(qū)域?qū)儼挡⒆柚褂脩酎c擊嘁锯,這種彈出模式下,豎屏時跟UIModalPresentationFullScreen
的效果一樣聂薪,橫屏時候兩邊則會留下變暗的區(qū)域家乘。
UIModalPresentationFormSheet
模式下,presented VC
的高度和寬度均會小于屏幕尺寸藏澳,presented VC
居中顯示仁锯,四周留下變暗區(qū)域。
UIModalPresentationCurrentContext
模式下翔悠,presented VC
的彈出方式和presenting VC
的父VC的方式相同业崖。
這四種方式在iPad上面統(tǒng)統(tǒng)有效,但在iPhone和iPod
touch上面系統(tǒng)始終以UIModalPresentationFullScreen
模式顯示presented VC
蓄愁。
Modal Transition Style(彈出時的動畫風格)
通過設(shè)置設(shè)置presenting VC的modalTransitionStyle屬性双炕,我們可以設(shè)置彈出presented VC時場景切換動畫的風格,其定義如下:
<pre><code>typedef enum {
UIModalTransitionStyleCoverVertical = 0,//底部滑入
UIModalTransitionStyleFlipHorizontal, //水平翻轉(zhuǎn)進入
UIModalTransitionStyleCrossDissolve, //交叉溶解
UIModalTransitionStylePartialCurl, //翻頁
} UIModalTransitionStyle;
</pre></code>
storyBoard
程序的本質(zhì)就是一個場景切換到另一個場景
storyBoard
的工作就是涝登,記錄有多少個場景雄家,如何從一個場景進去另一個場景
tip:當創(chuàng)建了兩個場景,縮小后胀滚,無法直接在場景內(nèi)放組件趟济,需要雙擊進入這個場景才能放組件。
segue
圖片中間的一條線就是segue
我們可以用代碼觸發(fā)Segue
<pre><code>
-(IBAction)
actionWithSugue :(id) Sender {
[self performSegueWithIdentifier:@"Segue" sender:sender];
}
</pre></code>
用代碼顯示StoryBoard里的VC
<pre><code>
-(IBAction)actionGo:(id)sender
{
Id vc2 = [self.storyboard
instantiateViewConrollerWithIdentifier:@"vc2"]; //把它實例化
[self showViewContorller:vc2
sender:sender];// 再跳過去
}</pre></code>
如果不是在同一個storyBoard的話就需要加載
-[UIStoryboard storyboardWithName:@"" bundle:]
如何返回
使用UnwindingForSugue方法
<pre><code>
-(IBAction)unwindForHome:(UIStoryboardSegue*)unwindSegue
towardsViewController:(UIViewController*)subsequentVC
{
}
</pre></code>
App Lifecycle
整個程序的邏輯就是一個個ViewController
協(xié)作完成的事件
可視的起點是UIWindow
不要在Application: willFinishLaunchingWithOptions:
內(nèi)放特別耗時的動作
Navigation導航
Navigation會在所有管理的view中存在的一個導航
Tabbar controller
Tabbar controller
管理的是一組viewcontroller
它的界面呈現(xiàn)在頁面最下方
手動把viewcontroller
添加進tabbarcontroller
在tabBarController
中按住control+鼠標咽笼,拖動至想連接的view
在不同場景傳值的話需要用到以下方法
<pre><code>
-(void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender
{
}
</pre></code>