iOS UINavigationController和UITabBarController的使用

剛參加工作周崭,希望在這里記錄自己工作中遇到的技術(shù)點,讓未來的自己在工作之余不斷回顧陪拘,也希望能讓同是新手的開發(fā)者遇到同樣的問題時候能夠有所收獲.

UINavigationController的單獨使用:

UINavigationController:導(dǎo)航控制器,是iOS中最常用的多視圖控制器之一裳涛,它用來管理多個試圖控制器咐吼。導(dǎo)航控制器可以認(rèn)為是管理控制器的控制器,主要管理有層級關(guān)系的控制器.UINavigationController 適用于父子頁面的跳轉(zhuǎn).

第一步:刪除SB和工程入口main咳蔚,采用純代碼的方式.新建了ViewController豪嚎、SecondViewController、ThirdViewController三個類.

第二步:在APPDelegate.m中輸入如下的代碼谈火,可以設(shè)置主窗口侈询,并且把ViewController設(shè)置為主控制器

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.backgroundColor = [UIColor whiteColor]; UINavigationController *navC = [[UINavigationController alloc]initWithRootViewController:[[ViewController alloc]init]]; self.window.rootViewController = naVC; [self.window makeKeyAndVisible];
第三步:在ViewController的viewDidAppear里寫如下代碼,構(gòu)造了一個按鈕糯耍,并定義按鈕的跳轉(zhuǎn)事件扔字,設(shè)置一個標(biāo)題為首頁.
UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(50, 100, 50, 20)]; [button setTitle:@"跳轉(zhuǎn)" forState:UIControlStateNormal]; [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [self.view addSubview:button]; [button addTarget:self action:@selector(jump:) forControlEvents:UIControlEventTouchUpInside]; [self.navigationItem setTitle:@"首頁"];
button的跳轉(zhuǎn)事件:這個時候要把SecondViewController的頭文件包含進(jìn)去
-(void)jump:(id)sender{ [self.navigationController pushViewController:[[SecondViewController alloc] init] animated:YES]; }
這個時候我們就能實現(xiàn)從ViewController這個界面到SecondViewController這個界面的跳轉(zhuǎn)了.
第三步:通過導(dǎo)航欄上右邊按鈕進(jìn)入第三個界面
在SecondViewController的ViewDidLoad里寫如下代碼
//導(dǎo)航欄設(shè)置標(biāo)題 [self.navigationItem setTitle:@"第二頁"]; //設(shè)置右邊的按鈕 UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithTitle:@"Third" style:UIBarButtonItemStyleBordered target:self action:@selector(pushThird)]; self.navigationItem.rightBarButtonItem = rightItem;
右邊按鈕的點擊事件
-(void)pushThird { // NSLog(@"跳轉(zhuǎn)到第三個界面"); ThirdViewController *thirdVc = [[ThirdViewController alloc]init]; [self.navigationController pushViewController:thirdVc animated:YES]; }
在ThirdViewController的ViewDidLoad里給第三個界面起個標(biāo)題
[self.navigationItem setTitle:@"第三頁"];
到此我們運行程序,就可以簡單實現(xiàn)界面的跳轉(zhuǎn)了.

UITabBarController的單獨使用

第一步第二步與上面的UINavigationController類似温技,不需要重復(fù).
第三步:先封裝一個加控制器的方法:

-(void)addChildViewController:(NSString *)vcName title:(NSString *)title imageName:(NSString *)imageName
{
1. 根據(jù)類名字符串創(chuàng)建對象
UIViewController *vc = [[NSClassFromString(vcName) alloc] init];
2. 設(shè)置其tabbarItem上的圖標(biāo)
vc.tabBarItem.image = [UIImage imageNamed:imageName];
3.設(shè)置tabbarItem上的標(biāo)題
vc.tabBarItem.title = title;
}

然后添加子控制器
// 添加子視圖控制器 -(void)addChildViewControllers { [self addChildViewController:@"firstViewController" title:@"第一" imageName:@"m1"]; [self addChildViewController:@"secondViewController" title:@"第二" imageName:@"m3"]; }
第四步:在ViewDidLoad里實現(xiàn)這個方法
[self addChildViewControllers];
這樣就能實現(xiàn)一個UITabBarController.

UINavigationController和UITabBarController的混合使用

這是我們開發(fā)中經(jīng)常遇到的革为,在這里我記下自己所用的一個方法
依舊按照之前的第一步和第二步,但這里要注意:混合使用時候還是把TabBarController作為了主控制器.
第三步:和上面的第三步類似舵鳞,不過要把TabBarController嵌入到導(dǎo)航控制器中
-(void)addChildViewController:(NSString *)vcName title:(NSString *)title imageName:(NSString *)imageName { // 根據(jù)類名字符串創(chuàng)建對象 UIViewController *vc = [[NSClassFromString(vcName) alloc] init]; // 設(shè)置其tabbarItem上的圖標(biāo) vc.tabBarItem.image = [UIImage imageNamed:imageName]; // 設(shè)置tabbarItem上的標(biāo)題 vc.tabBarItem.title = title; // 將其嵌入到一個導(dǎo)航欄控制器中 UINavigationController *navi = [[UINavigationController alloc] initWithRootViewController:vc]; // 設(shè)置導(dǎo)航欄上的標(biāo)題 vc.navigationItem.title = @"首頁"; // 將導(dǎo)航欄控制器添加到tabBarController [self addChildViewController:navi]; }
這樣我們就實現(xiàn)了UINavigationController和UITabBarController的混合使用.

第一次寫震檩,代碼可能比較low,有什么不正確的地方蜓堕,歡迎各位指正

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末抛虏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子套才,更是在濱河造成了極大的恐慌迂猴,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件背伴,死亡現(xiàn)場離奇詭異沸毁,居然都是意外死亡,警方通過查閱死者的電腦和手機挂据,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門以清,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人崎逃,你說我怎么就攤上這事掷倔。” “怎么了个绍?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵勒葱,是天一觀的道長浪汪。 經(jīng)常有香客問我,道長凛虽,這世上最難降的妖魔是什么死遭? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮凯旋,結(jié)果婚禮上呀潭,老公的妹妹穿的比我還像新娘。我一直安慰自己至非,他們只是感情好钠署,可當(dāng)我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著荒椭,像睡著了一般谐鼎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上趣惠,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天狸棍,我揣著相機與錄音,去河邊找鬼味悄。 笑死草戈,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的傍菇。 我是一名探鬼主播猾瘸,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼丢习!你這毒婦竟也來了牵触?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤咐低,失蹤者是張志新(化名)和其女友劉穎揽思,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體见擦,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡钉汗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了鲤屡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片损痰。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖酒来,靈堂內(nèi)的尸體忽然破棺而出卢未,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布辽社,位于F島的核電站伟墙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏滴铅。R本人自食惡果不足惜戳葵,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望汉匙。 院中可真熱鬧拱烁,春花似錦、人聲如沸盹兢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绎秒。三九已至,卻和暖如春尼摹,著一層夾襖步出監(jiān)牢的瞬間见芹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工蠢涝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留玄呛,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓和二,卻偏偏與公主長得像徘铝,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子惯吕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,452評論 2 348

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

  • 前言 由于最近兩個多月惕它,筆者正和小伙伴們忙于對公司新項目的開發(fā),筆者主要負(fù)責(zé)項目整體架構(gòu)的搭建以及功能模塊的分工废登。...
    CoderMikeHe閱讀 27,006評論 74 271
  • { 11淹魄、核心動畫 需要簽協(xié)議,但是系統(tǒng)幫簽好 一堡距、CABasicAnimation 1甲锡、創(chuàng)建基礎(chǔ)動畫對象 CAB...
    CYC666閱讀 1,530評論 2 4
  • *7月8日上午 N:Block :跟一個函數(shù)塊差不多,會對里面所有的內(nèi)容的引用計數(shù)+1羽戒,想要解決就用__block...
    炙冰閱讀 2,477評論 1 14
  • 1,Search Bar 怎樣去掉背景的顏色(storyboard里只能設(shè)置background顏色缤沦,可是發(fā)現(xiàn)cl...
    以德扶人閱讀 2,333評論 2 50
  • 悶熱的這個夏天,就像池塘里的青蛙轉(zhuǎn)身一跳易稠,不見了影子缸废。 清涼的秋風(fēng)悄悄地把小院兒里吹得色彩斑斕,熱鬧起...
    亮的記閱讀 732評論 0 5