geekband.02.iOS開發(fā)基礎(chǔ)(二)

ViewController

作為連接視圖View和模型Model的橋梁(控制器Controller)丈屹,從名字就可以看得出來罗售,它是用來管理View的。除此之外奖恰,它還承擔(dān)著傳遞數(shù)據(jù)吊趾,相應(yīng)用戶操作,內(nèi)存管理瑟啃,狀態(tài)保持和適應(yīng)設(shè)備的功能论泛。

先來看看它的生存周期:

1.jpg

當一個viewController它管理的view出現(xiàn)或者消失的時候會引發(fā)相應(yīng)的方法,如果有需求蛹屿,可以在對應(yīng)的方法里寫代碼來處理相應(yīng)的事務(wù)屁奏。

默認狀態(tài)下,Xcode會將與ViewController同名的Xib文件關(guān)聯(lián)到對應(yīng)的Controller上错负。如MyViewController關(guān)聯(lián)到MyView.xib或者MyViewCon.xib坟瓢。

除此之外也可以用代碼來制定加載制定的xib:

[UIViewController initWithNibName:@"MyView"];

或者在IB中指定ViewController,如下:

2.jpg

跳轉(zhuǎn)

在viewcontroller中可以跳轉(zhuǎn)到另一個viewcontoller:

[self presentViewController: animated: completion:];
[self showViewController: sender:];

撤銷當前的view可以使用:

[self dismissViewControllerAnimated: completion:];

回傳數(shù)據(jù)

在其中可以設(shè)定回傳數(shù)據(jù)或者在撤銷當前view之后執(zhí)行一段代碼犹撒。completion是一個代碼塊block折联。
實際上是使用了觀察者模式來通知第一個view,并將數(shù)據(jù)傳給它识颊。

//在第二個view中诚镰,發(fā)送do發(fā)生變化的消息,并且將數(shù)據(jù)存在字典中回轉(zhuǎn)給第一個view
[self dismissViewControllerAnimated:YES completion:^{
        NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil];
        [[NSNotificationCenter defaultCenter] postNotificationName:@"do" object:self userInfo:dict];
    }];

//在第一個view中的viewDidLoad方法中
//注冊觀察者祥款,如果do對象有變化就執(zhí)行Test方法
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(Test:) name:@"do" object:nil];

- (void)Test:(id)sender{
    NSLog(@"%@", sender);
}

執(zhí)行結(jié)果:

2016-06-02 17:52:33.594 NibVC[37096:5919151] NSConcreteNotification 0x7fd6495118e0 {name = do; object = <SecondViewController: 0x7fd6494b82d0>; userInfo = {
    key1 = value1;
    key2 = value2;
}

這種方法不僅可以用于viewController的回傳值清笨,還可以用于各個對象之間的消息傳遞,只需要注冊觀察者刃跛,和發(fā)送消息即可抠艾。

Storyboard

Storyboard中文譯為故事版,也就是做界面的地方桨昙,app的應(yīng)用邏輯和導(dǎo)演講故事是不是很像呢检号?在這之前首懈,蘋果使用的是xib文件來做的界面。storyboard的有點在于對多個view的管理比xib的要好谨敛。

大多數(shù)操作就是托控件到view上,如果要關(guān)聯(lián)到.m文件中則要按住Ctrl鍵+上控件拖到對應(yīng)的.m文件上即可選擇是添加為屬性IBOutlet還是方法IBAction滤否。

場景的跳轉(zhuǎn)

Storyboard的場景跳轉(zhuǎn)使用的是Segue脸狸,按下Ctrl拖住一個按鈕到下一個場景上即可實現(xiàn)。
可以對Segue進行命名藐俺,以便在代碼中使用Segue炊甲。

[self performSegueWithIdentifier:@"" sender:sender];

也可以在代碼中顯示Storyboard里的View Controller:

id vc = [self.storyboard instantiateViewControllerWithIdentifier:@""];
[self showViewController:vc sender:sender];

返回

在對應(yīng)的vc中添加,再在Storyboard中將按鈕的方法設(shè)置為以下方法欲芹。ForSegue可以改變?yōu)槠渌拿帧?/p>

- (void)unwindForSegue:(UIStoryboardSegue*)unwindSegue{

}

App的聲明周期

3.jpg

4.jpg

5.jpg

Navigation Controller

NavigationController是一種高效管理多個界面的工具卿啡,它可以提供在多個view之間方面地跳轉(zhuǎn)。

6.jpg

每個被管理的ViewController自己提供:
內(nèi)容菱父,導(dǎo)航欄標題颈娜,導(dǎo)航欄上的自定義按鈕,或者可選的工具欄按鈕浙宜。

數(shù)據(jù)的傳遞可以通過Segue或者Delegate官辽,Segue上面提到過,下面就列出使用Delegate的方法:

- (void)navigationController: willShowViewController: animated:
- (void)nagivationController: didShowViewController: animated:

代碼中使用

//創(chuàng)建
- initWithRootViewController:
- initWithNavigationBarClass:toolbarClass:
//跳轉(zhuǎn)
- pushViewController:animated:
- popViewControllerAnimated:
- popToRootViewControllerAnimated:
- popToViewController:animated:

Tabbar Controller

7.jpg

TabbarController是另一種管理多個ViewController的方式粟瞬。
使用方法和NavigationController非常相似同仆。還可以和它結(jié)合起來一起使用。

8.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末裙品,一起剝皮案震驚了整個濱河市俗批,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌市怎,老刑警劉巖岁忘,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異焰轻,居然都是意外死亡臭觉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門辱志,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蝠筑,“玉大人,你說我怎么就攤上這事揩懒∈惨遥” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵已球,是天一觀的道長臣镣。 經(jīng)常有香客問我辅愿,道長,這世上最難降的妖魔是什么忆某? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任点待,我火速辦了婚禮,結(jié)果婚禮上弃舒,老公的妹妹穿的比我還像新娘癞埠。我一直安慰自己,他們只是感情好聋呢,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布苗踪。 她就那樣靜靜地躺著,像睡著了一般削锰。 火紅的嫁衣襯著肌膚如雪通铲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天器贩,我揣著相機與錄音颅夺,去河邊找鬼。 笑死蛹稍,一個胖子當著我的面吹牛碗啄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播稳摄,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼稚字,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了厦酬?” 一聲冷哼從身側(cè)響起胆描,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎仗阅,沒想到半個月后昌讲,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡减噪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年短绸,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片筹裕。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡醋闭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出朝卒,到底是詐尸還是另有隱情证逻,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布抗斤,位于F島的核電站囚企,受9級特大地震影響丈咐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜龙宏,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一棵逊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧银酗,春花似錦歹河、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽厨姚。三九已至衅澈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谬墙,已是汗流浹背今布。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拭抬,地道東北人部默。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像造虎,于是被迫代替她去往敵國和親傅蹂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

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