一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - IOS - iOS開發之視圖切換

iOS開發之視圖切換

2021-01-16 14:40執著丶執念 IOS

在iOS開發中視圖的切換是很頻繁的,獨立的視圖應用在實際開發過程中并不常見,除非你的應用足夠簡單。在iOS開發中常用的視圖切換有三種,今天我們將一一介紹,希望大家能夠喜歡。

一、視圖切換

  • uitabbarcontroller (分頁控制器) - 平行管理視圖
  • uinavigationcontroller (導航控制器) - 壓棧出棧管理視圖
  • 模態窗口

二、uitabbarcontroller分頁控制器

  • uitabbarcontroller是為了利用 頁簽切換視圖 設計的控制器
  • 該控制器有一個uitabbar控件,用戶通過點擊uitabbar進行視圖切換
  • uitabbarcontroller本身會不顯示任何視圖,它只是一個 容器控制器
  • 為了減少視圖間的耦合,所有uitabbarcontroller的子視圖的相關標題、圖標等信息由子視圖自己控制

iOS開發之視圖切換

注意事項:

  • uitabbarcontroller會一次性初始化所有子控制器,但默認只加載第一個控制器視圖
  • 每個視圖控制器都有一個tabbarcontroller屬性,用它來訪問所在的uitabbarcontroller
  • 每個視圖控制器都有一個tabbaritem屬性,用它來控制uitabbarcontroller的uitabbar上的顯示信息
  • tarbaritem的image屬性必須是png格式,并且打開alpha通道 ,否則無法正常顯示
  • uitabbarcontroller通常是作為整個程序的rootviewcontroller的,我們需要在程序的window顯示之前就創建好它。

具體步驟如下:

  • 創建一個uitabbarcontroller對象
  • 創建uitabbarcontroller中每一個tab對應的要顯示的對象viewcontroller
  • 通過uitabbarcontroller的viewcontrollers屬性將要顯示的所有viewcontroller添加到uitabbarcontroller中
  • 通過設置uitabbarcontroller對象為window.rootviewcontroller,然后顯示window

 

復制代碼 代碼如下:

//a.初始化一個tabbar控制器
uitabbarcontroller *tarbarvc = [[uitabbarcontroller alloc] init];
//設置控制器為window的根控制器
self.window.rootviewcontroller = tarbarvc;
//b.創建子控制器
uiviewcontroller *c1 = [[uiviewcontroller alloc] init];
c1.view.backgroundcolor = [uicolor graycolor];
c1.view.backgroundcolor=[uicolor greencolor];
c1.tabbaritem.title = @"消息";
c1.tabbaritem.image = [uiimage imagenamed:@"tab_recent_nor"];
c1.tabbaritem.badgevalue = @"123";
uiviewcontroller *c2 = [[uiviewcontroller alloc] init];
c2.view.backgroundcolor = [uicolor browncolor];
c2.tabbaritem.title = @"聯系人";
c2.tabbaritem.image = [uiimage imagenamed:@"tab_buddy_nor"];
uiviewcontroller *c3 = [[uiviewcontroller alloc] init];
c3.tabbaritem.title = @"動態";
c3.tabbaritem.image = [uiimage imagenamed:@"tab_qworld_nor"];
uiviewcontroller *c4 = [[uiviewcontroller alloc] init];
c4.tabbaritem.title = @"設置";
c4.tabbaritem.image = [uiimage imagenamed:@"tab_me_nor"];
//c.添加子控制器到itabbarcontroller中
tarbarvc.viewcontrollers = @[c1,c2,c3,c4];
//d.設置window為主窗口并顯示出來
[self.window makekeyandvisible];

 

uitabbarcontrollerdelegate代理

 

復制代碼 代碼如下:

#pragma mark 該方法用于控制tabbaritem能不能選中
- (bool)tabbarcontroller:(uitabbarcontroller *)tabbarcontroller shouldselectviewcontroller:(uiviewcontroller *)viewcontroller;

 

改變uitabbarcontroller當前顯示視圖的方法

  • 改變selectedindex屬性
  • 改變selectedviewcontroller屬性
  • 改變viewcontrollers屬性

三、uinavigationcontroller導航控制器

  • uinavigationcontroller中的子控制器以棧的形式存儲,只有在棧頂部的控制器才能顯示在界面上
  • 壓棧pushcontroller,出棧popcontroller
  • uinavigationcontroller必須有一個根控制器rootviewcontroller
  • 子控制器通過navigationcontroller屬性訪問uinavigationcontroller
  • 在棧中的子控制器都有一個導航欄navigationbar,通過navigationitem去控制

iOS開發之視圖切換


uinavigationitem屬于mvc中的model,封裝了要顯示在uinavigationbar上的數據:

title: 標題
titleview :標題視圖
leftbarbuttonitem :左按鈕
rightbarbuttonitem :右按鈕

下一個子視圖左側返回按鈕leftbarbuttonitem的標題優先級:

  • 導航欄返回按鈕backbarbuttonitem的標題
  • 導航欄navigationitem的標題
  • 視圖控制器的標題

uinavigationcontroller常用的主要方法:

 

復制代碼 代碼如下:

#pragma mark 壓棧,把控制器壓入導航控制器子控制器棧中
- (void)pushviewcontroller:(uiviewcontroller *)viewcontroller animated:(bool)animated;
#pragma mark 出棧,把導航控制器子控制器棧的棧頂彈出
- (void)popviewcontrolleranimated:(bool)animated;
#pragma mark 多次出棧直到棧頂為指定控制器
- (void)poptoviewcontroller:(uiviewcontroller *)viewcontroller animated:(bool)animated;
#pragma mark 多次出棧直到棧頂為根控制器
- (void)poptorootviewcontrolleranimated:(bool)animated;

 

四、模態窗口

 

復制代碼 代碼如下:

#pragma mark 從下方彈出指定的視圖控制器,賦予模態,即當前視圖關閉前,其他視圖上的內容無法操作
- (void)presentviewcontroller:(uiviewcontroller *)viewcontrollertopresent animated:(bool)flag completion:(void (^)(void))completion;
#pragma mark 關閉模態窗口,該方法在模態窗口中調用
- (void)dismissviewcontrolleranimated:(bool)flag completion:(void (^)(void))completion;

延伸 · 閱讀

精彩推薦
  • IOSiOS開發技巧之狀態欄字體顏色的設置方法

    iOS開發技巧之狀態欄字體顏色的設置方法

    有時候我們需要根據不同的背景修改狀態欄字體的顏色,下面這篇文章主要給大家介紹了關于iOS開發技巧之狀態欄字體顏色的設置方法,文中通過示例代碼...

    夢想家-mxj8922021-05-10
  • IOSiOS實現控制屏幕常亮不變暗的方法示例

    iOS實現控制屏幕常亮不變暗的方法示例

    最近在工作中遇到了要將iOS屏幕保持常亮的需求,所以下面這篇文章主要給大家介紹了關于利用iOS如何實現控制屏幕常亮不變暗的方法,文中給出了詳細的...

    隨風13332021-04-02
  • IOSiOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    這篇文章主要介紹了iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果的相關資料,需要的朋友可以參考下...

    jiangamh8882021-01-11
  • IOSiOS中UILabel實現長按復制功能實例代碼

    iOS中UILabel實現長按復制功能實例代碼

    在iOS開發過程中,有時候會用到UILabel展示的內容,那么就設計到點擊UILabel復制它上面展示的內容的功能,也就是Label長按復制功能,下面這篇文章主要給大...

    devilx12792021-04-02
  • IOSiOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)

    iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和

    這篇文章主要介紹了iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)的相關資料,需要的朋友可以參考下...

    CodingFire13652021-02-26
  • IOSiOS開發之視圖切換

    iOS開發之視圖切換

    在iOS開發中視圖的切換是很頻繁的,獨立的視圖應用在實際開發過程中并不常見,除非你的應用足夠簡單。在iOS開發中常用的視圖切換有三種,今天我們將...

    執著丶執念5272021-01-16
  • IOSiOS中MD5加密算法的介紹和使用

    iOS中MD5加密算法的介紹和使用

    MD5加密是最常用的加密方法之一,是從一段字符串中通過相應特征生成一段32位的數字字母混合碼。對輸入信息生成唯一的128位散列值(32個字符)。這篇文...

    LYSNote5432021-02-04
  • IOS詳解iOS中多個網絡請求的同步問題總結

    詳解iOS中多個網絡請求的同步問題總結

    這篇文章主要介紹了詳解iOS中多個網絡請求的同步問題總結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    liang199111302021-03-15
主站蜘蛛池模板: 免费又爽又黄禁片视频在线播放 | 国精视频一区二区视频 | 免费人成在线观看视频播放 | 欧美成人禁片在线观看俄罗斯 | 人人爽人人草 | 免费国产午夜高清在线视频 | 亚洲AV 无码AV 中文字幕 | 日韩在线观看一区二区不卡视频 | 免费一级特黄特色大片∵黄 | 久久AV国产麻豆HD真实 | 日韩精品一区二区 | 我要看免费毛片 | 成人免费淫片95视频观看网站 | 强行扒开美女大腿挺进 | 国产另类视频一区二区三区 | 日本高清中文 | 成人au免费视频影院 | 国内精品久久久久久不卡影院 | 垫底辣妹免费观看完整版 | 日韩国产欧美精品综合二区 | 男女xxoo做爰猛烈动态一 | 美女脱了内裤让男生尿囗 | 香蕉免费看一区二区三区 | 亚洲小视频 | 国产日韩成人 | 亚洲欧洲日产国码天堂 | 国产精品麻豆99久久 | 韩国日本香港毛片免费 | 翁公与小莹在客厅激情 | 九九九九在线精品免费视频 | 免费视频专区一国产盗摄 | 欧美一级级a在线观看 | 99热久久国产精品这里 | 我把寡妇日出水好爽 | 免费看男女做好爽好硬视频 | 黄 在线播放 | 99热这里只精品99re66 | 99精品网站| 甜蜜惩罚小说 | 精品久久久久久久久久久久久久久 | 免费观看日本 |