溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

UITabBarController的基本原理及使用(一)

發(fā)布時(shí)間:2020-07-19 15:49:17 來源:網(wǎng)絡(luò) 閱讀:4471 作者:windbadboy 欄目:移動(dòng)開發(fā)

前言

UITabBarController在iOS開發(fā)中是一個(gè)高頻使用的控制器,典型的案例如QQ、微信均使用UITabBarController布局。本文將從一個(gè)新建工程,和大家一起了解UITabBarController的基本原理和使用方法。


基本概念

UITabBarController能夠方便地管理多個(gè)控制器,并且在多個(gè)控制器之間切換。看個(gè)示例
UITabBarController的基本原理及使用(一)

微信主界面有4個(gè)子控制器,分別是微信,通訊錄,發(fā)現(xiàn),點(diǎn)擊不同的圖標(biāo),會(huì)展示不同的頁面(也就是子控制器的view)。這是一個(gè)典型的UITabBarController應(yīng)用案例。


項(xiàng)目實(shí)踐

我們通過新建項(xiàng)目來熟悉UITabBarController,實(shí)踐出真知。
實(shí)驗(yàn)環(huán)境:Xcode 9.4.1
編程語言:Objective-C
我們主要理解原理,用swift也是可以的,本例使用OC。
UITabBarController的基本原理及使用(一)

選擇Single View App(單視圖app),點(diǎn)Next。
UITabBarController的基本原理及使用(一)
Product Name:是項(xiàng)目的名稱,可自定義。
Organization Name:組織名,可自定義
Organization Identifier:組織標(biāo)識(shí)符,最好和單位域名保持一致,可自定義。
其它默認(rèn),點(diǎn)Next,一個(gè)嶄新的項(xiàng)目就創(chuàng)建好了。

這個(gè)case我們可能要做幾遍,第一遍我們用純代碼來實(shí)現(xiàn)。
UITabBarController的基本原理及使用(一)
選中info.plist,把Main storyboard file base name對(duì)應(yīng)值(value)刪掉。這樣做的目的是讓程序在運(yùn)行時(shí),不從Main.storyboard里面加載控制器,而是通過代碼加載。
UITabBarController的基本原理及使用(一)
仔細(xì)看圖中的注釋。我再解釋一下啟動(dòng)流程。

  1. 程序啟動(dòng)先的main.m入口函數(shù);
  2. 接著查看info.plist里面的main值(被我們清空了value),結(jié)果為空,即不加載Main.storyboard.
  3. 調(diào)用appDelegate的didFinishLaunchingWithOptions方法。
    來到didFinish...方法后,我們需要手工創(chuàng)建window、UItabBarController,并將window設(shè)置為可見狀態(tài)。
    做完以上幾步,我們先運(yùn)行一下程序。
    UITabBarController的基本原理及使用(一)
    我們看到導(dǎo)航欄已經(jīng)正常顯示,證明加載成功,為什么主窗口是黑色,因?yàn)檫€沒添加子控制器。

我們給tabbar添加第一個(gè)控制器。
UITabBarController的基本原理及使用(一)

注意勾選Also create XIB file,讓系統(tǒng)創(chuàng)建一個(gè)同名的xib文件(可圖形化部署控件)。
UITabBarController的基本原理及使用(一)
會(huì)生成三個(gè)文件。點(diǎn)擊.xib文件,把view設(shè)置成紅色(為了醒目)。
UITabBarController的基本原理及使用(一)
設(shè)置好后,返回AppDelegate.m文件。
UITabBarController的基本原理及使用(一)

引用剛才創(chuàng)建的FirstViewController,然后創(chuàng)建一個(gè)FirstViewController對(duì)象,并通過tabbar的addChildViewController方法將控制器設(shè)為tabbar的子控制器 。運(yùn)行一下程序。
UITabBarController的基本原理及使用(一)

我們發(fā)現(xiàn)祖國(guó)山河一片紅,證明子控制器成功加載。
依葫蘆畫瓢,再創(chuàng)建個(gè)UIViewController控制器,顏色設(shè)置為藍(lán)色(大家隨意,深色就好,方便觀察效果)。在AppDelegate.m里面,依照添加第一個(gè)控制器,再把第二個(gè)控制器加載到tabar里面。
UITabBarController的基本原理及使用(一)

Question 1:此時(shí)運(yùn)行程序,tabbar會(huì)加載哪一個(gè)ViewController?

答:我們說過tabbar可以管理多個(gè)控制器,其實(shí)是把這些控制器加載到一個(gè)數(shù)組里面來管理,先加載的下標(biāo)是0,第2個(gè)加載下載是1,以此類推。
而tabbar默認(rèn)顯示第一個(gè)添加的子控制器,也就是firstVC。所以還是加載的紅色。

如果你想手動(dòng)選擇加載的控制器,可以使用selectedIndex屬性。在本例中可以這樣做:

tabBarViewController.selectedIndex = 1;

//本例中目前加載了2個(gè)子控制器,他們的下標(biāo)分別是0,1.

再運(yùn)行一 下程序,你指定的子控制器應(yīng)該已經(jīng)加載成功了。

(未完待續(xù))
歡迎關(guān)注的我的公眾號(hào):Ted的技術(shù)樂園

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI