GeekBand~iOS~實戰(zhàn)入門~第二周

7.ViewController

MVC
MVC.png

-模型宙拉。保存應(yīng)用數(shù)據(jù)的狀態(tài)。
-視圖如输。為用戶展示信息并提供接口鼓黔。
-控制器。接收用戶請求不见,根據(jù)請求更新模型澳化。更新視圖,并將其作為對用戶請求的回應(yīng)稳吮。
單向引用:Controller 引用 View 和Model, View和 Model 不直接引用Controller缎谷。

UIViewController

UIViewController是所有控制器的根類。
作用:
-管理View
-傳遞數(shù)據(jù)
-響應(yīng)用戶操作
-內(nèi)存管理灶似、狀態(tài)保持
-適應(yīng)設(shè)備

生命周期

1.alloc 創(chuàng)建對象列林,分配空間
2.init 初始化對象,初始化數(shù)據(jù)
3.loadView 從nib載入視圖
4.viewDidLoad 載入完成酪惭,可進行自定義數(shù)據(jù)以及動態(tài)創(chuàng)建其他控件
5.viewWillApper 視圖將出現(xiàn)在屏幕之前
6.viewDidApper 視圖已經(jīng)在屏幕上渲染完成
--視圖被移除屏幕并且銷毀時的順序
1.viewWillDisappear 視圖將被從屏幕上移除之前執(zhí)行
2.viewDidDisappear 視圖已經(jīng)被從屏幕上移除
3.dealloc 視圖被銷毀

創(chuàng)建 rootViewController 的過程

UIApplication:
_runWithMainScene:transitionContext:completion: _loadMainInterfaceFile _loadMainStoryboardFileNamed:bundle: /_loadMainNibFileNamed:bundle:
如果有Info.plist,_loadMainInterfaceFile,讀取Info.plist;Info.plist是UIMainStoryboardFile時希痴,用_loadMainStoryboardFileNamed:bundle:;是NSMainNibFile時,用 _loadMainNibFileNamed:bundle:.

UIApplication??no春感,用UIApplicationDelegatedidFinshLaunch創(chuàng)建window和provide UI,創(chuàng)建appDelegate.window.rootViewController,
UIApplicationDelegatedidFinshLaunch??
no砌创,,window is nil鲫懒,no UI(black screen)

取得ViewController 的 View

View Controller 盡可能推遲View 加載嫩实,以UI開始的是系統(tǒng)類,不查找nib
initWithNibName 初始化指定的nib??ViewController 不帶Controller名字的nib??ViewController同名nib窥岩,默認用UIView創(chuàng)建空白視圖甲献。

8.StoryBoard

故事板

可以描述應(yīng)用中有哪些界面,界面有哪些控件以及它們的事件颂翼。故事板還能描述界面之間是如何導(dǎo)航的晃洒。

Segue

Segue 定義了Scene之間的跳轉(zhuǎn)方式慨灭,體現(xiàn)了Scene之間的關(guān)系。
初始場景 ??Is Initial View Controller
從一個Scene跳轉(zhuǎn)到另一個Scene球及,代碼執(zhí)行:

- (IBAction)actionWithSegue:(id)sender {
  [self performSegueWithIdentifier:@"goTo2" sender:sender];
}

Segue返回
從一個Scene2返回到另一個Scene1缘挑,使用 Unwinding Segue

- (IBAction)unwindingForSegue:(UIStoryboardSegue *)unwindingSegue {
}

傳輸數(shù)據(jù)
-傳遞給下一個ViewController

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
  if ([segue.identifier isEqualToString:@"goTo2"]) {
    NSLog(@"%@",segue.destinationViewController.title);
}
}

使用多個storyboard(Storyboard Reference)

[self showViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"vc2"] sender:sender];

9.App Lifecycle

應(yīng)用生命周期
應(yīng)用生命周期.png

iOS應(yīng)用5種狀態(tài):
-Not Running(非運行狀態(tài))。應(yīng)用沒有運行或被系統(tǒng)終止桶略。
-Inactive(前臺非活動狀態(tài))。應(yīng)用正進入前臺狀態(tài)诲宇,但是還不能接受事件處理际歼。
-Active (前臺活動狀態(tài))。應(yīng)用進入前臺狀態(tài)姑蓝,能接受事件處理鹅心。
-Background(后臺狀態(tài))。應(yīng)用進入后臺后纺荧,依然能夠執(zhí)行代碼旭愧。
-Suspended(掛起狀態(tài))。應(yīng)用進入掛起狀態(tài)宙暇,不能執(zhí)行代碼输枯。如果系統(tǒng)內(nèi)存不夠,應(yīng)用會被終止占贫。

Not Running ?? Inactive階段
調(diào)用
application:didFinishLaunchingWithOptions:方法桃熄,
發(fā)出UIApplicationDidFinishLaunchingNotification通知。
Inactive ?? Active階段
調(diào)用
applicationDidBecomeActive:方法型奥,
發(fā)出 UIApplicationDidBecomeActiveNotification通知瞳收。
Active ?? Inactive階段
調(diào)用
applicationWillResignActive:方法,
發(fā)出UIApplicationWillResignActiveNotification通知厢汹。
Inactive ?? Background階段
應(yīng)用從非活動狀態(tài)進入到后臺螟深。
Background ?? Suspended階段
調(diào)用applicationDidEnterBackground:方法,
發(fā)出UIApplicationDidEnterBackgroundNotification通知烫葬。
Suspended ?? Background階段
應(yīng)用從掛起狀態(tài)進入后臺界弧。
Background ?? Inactive階段
調(diào)用
applicationWillEnterForeground:方法
發(fā)出UIApplicationWillEnterForegroundNotification通知。
Suspended ?? Not Running階段
應(yīng)用從掛起狀態(tài)進入非運行狀態(tài)厘灼。
調(diào)用
applicationWillTerminate:方法夹纫,
發(fā)出UIApplicationWillTerminateNotification通知。

10.Navigation

UINavigationController设凹。導(dǎo)航控制器舰讹,可以構(gòu)建樹形導(dǎo)航模式應(yīng)用到根控制器。
UINavigationBar闪朱。導(dǎo)航欄月匣,與導(dǎo)航控制器一對一關(guān)系钻洒,管理一個視圖控制器的堆棧,用來顯示樹形結(jié)構(gòu)中的視圖锄开。
UINavigationItem素标。導(dǎo)航欄項目。
UIBarButtonItem萍悴。導(dǎo)航欄中的按鈕头遭。
-導(dǎo)航時的數(shù)據(jù)傳遞
1.通過 Segue
2.利用 Delegate

- navigationController:willShowViewController:animated:
- navigationController:didShowViewController:animated:

-代碼中使用導(dǎo)航
創(chuàng)建

- initWithRootViewController:
- initWithNavigationBarClass:toolbarClass:
- setViewControllers:animated:

跳轉(zhuǎn)

- pushViewController:animated:
- popViewController:animated:
- popToRootViewController:animated:
- popToViewController:animated:
- showViewController:sender:

設(shè)置與控制

.delegate
.viewControllers
.navigationBar
toolbar

UIToolbar 工具欄。工具欄時工具按鈕(UIBarButtonItem)的容器.
iPhone中癣诱,工具欄位于屏幕底部计维,豎屏布局工具欄,按鈕數(shù)不能超過5個撕予,如果超過5個鲫惶,第5個按鈕顯示“更多”。
UIBarButtonItem中实抡,有按鈕欠母,“固定空格”和“可變空格”。

工具欄.png

12.Tabbar

UITabBarController
使用步驟:
(1)初始化UITabBarController

UITabBarController *tb=[[UITabBarController alloc]init];

(2)設(shè)置UIWindow的rootViewController為UITabBarController

self.window.rootViewController=tb;

(3)創(chuàng)建相應(yīng)的子控制器(viewcontroller)

UIViewController *c1=[[UIViewController alloc]init];
UIViewController *c2=[[UIViewController alloc]init];

(4)把子控制器添加到UITabBarController

[tb addChildViewController:c1];
[tb addChildViewController:c2];

或者

tb.viewControllers=@[c1,c2];
TabBar.png

UITabBarButton里內(nèi)容吆寨,由對應(yīng)子控制器tabBarItem屬性來決定

c1.tabBarItem.title=@"消息";
c1.tabBarItem.image=[UIImage imageNamed:@"messageImage"];

兩種方式可以往UITabBarController中添加子控制器

[tb addChildViewController:c1];
tb.viewControllers=@[c1,c2];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赏淌,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子鸟废,更是在濱河造成了極大的恐慌猜敢,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盒延,死亡現(xiàn)場離奇詭異缩擂,居然都是意外死亡,警方通過查閱死者的電腦和手機添寺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門胯盯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人计露,你說我怎么就攤上這事博脑。” “怎么了票罐?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵叉趣,是天一觀的道長。 經(jīng)常有香客問我该押,道長疗杉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任蚕礼,我火速辦了婚禮烟具,結(jié)果婚禮上梢什,老公的妹妹穿的比我還像新娘。我一直安慰自己朝聋,他們只是感情好嗡午,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著冀痕,像睡著了一般荔睹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上言蛇,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天应媚,我揣著相機與錄音,去河邊找鬼猜极。 笑死,一個胖子當(dāng)著我的面吹牛消玄,可吹牛的內(nèi)容都是我干的跟伏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼翩瓜,長吁一口氣:“原來是場噩夢啊……” “哼受扳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起兔跌,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤勘高,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后坟桅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體华望,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年仅乓,在試婚紗的時候發(fā)現(xiàn)自己被綠了赖舟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡夸楣,死狀恐怖宾抓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情豫喧,我是刑警寧澤石洗,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站紧显,受9級特大地震影響讲衫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鸟妙,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一焦人、第九天 我趴在偏房一處隱蔽的房頂上張望挥吵。 院中可真熱鬧,春花似錦花椭、人聲如沸忽匈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丹允。三九已至,卻和暖如春袋倔,著一層夾襖步出監(jiān)牢的瞬間雕蔽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工宾娜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留批狐,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓前塔,卻偏偏與公主長得像嚣艇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子华弓,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容