iOS開發-UI (十一) UITabBarController

来源:http://www.cnblogs.com/fcug/archive/2017/02/09/6384106.html
-Advertisement-
Play Games

知識點: 1.UITabBarController使用 2.UITabBarItem使用 關於TabBarController除了本次整理的內容,有興趣的可以看下我以前發過的這兩篇,在實際開發中很實用的東西. RDVTabBarController的基本使用 以及tabbar的防止雙點擊方法 從ta ...


知識點:

1.UITabBarController使用

2.UITabBarItem使用

 

關於TabBarController除了本次整理的內容,有興趣的可以看下我以前發過的這兩篇,在實際開發中很實用的東西.

RDVTabBarController的基本使用 以及tabbar的防止雙點擊方法

從tabBarController的一個item上的控制器跳轉到另一個item上的控制器

 

=======================

UITabBarController

    1.創建方式

    2.如何把一個UIViewController加入到UITabBarController

    3.如何把一個UINavigationController加入到UITabBarController

    4.如何記住點擊順序

    5.設置和獲取選中項

@property(nonatomic) NSUInteger selectedIndex;

 

=======================

UITabBarItem

 

    1.UITabBarItem和UITabBarController關係

tabBarItem是UIViewController的一個屬性

這個屬性是為UITabBarController服務的

    2.創建文字和圖片的UITabBarItem 

      - (id)initWithTitle:(NSString *)title 

      image:(UIImage *)image 

tag:(NSInteger)tag;

 

-(instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{

    

    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {

//設置文字帶圖片類型的

self.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"紅色" image:[UIImage imageNamed:@"1_selected"] tag:0];

 

//設置文字,選中圖片和非選中圖片類型

     // self.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"紅色" image:[UIImage imageNamed:@"3_normal"] selectedImage:[UIImage imageNamed:@"3_selected"]];

}

 

 

註意:ios7後添加的函數

- (instancetype)initWithTitle:(NSString *)title 

image:(UIImage *)image 

selectedImage:(UIImage *)selectedImage

 

    3.創建系統自帶的UITabBarSystemItem

- (id)initWithTabBarSystemItem:(UITabBarSystemItem)systemItem 

  tag:(NSInteger)tag;

 

//設置系統類型

self.tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemTopRated tag:0];

 

 

    4.設置UITabBarItem徽標

      @property(nonatomic,copy) NSString *badgeValue

    

//設置徽標

self.tabBarItem.badgeValue = [NSString stringWithFormat:@"%ld",10L];

 

 

=======================

UITabBarController使用註意

    1.UITabBarController數量限制

      1)tabBarController中最多只允許顯示5個試圖控制器

超出的系統會自動添加一個more

    2.UITabBarController編輯

用戶可以隨意設置每個控制的顯示的位置

 

=======================

UITabBarController順序

    1.記錄用戶最後一次點擊的viewController

      1)NSUserDefaults作用

NSUserDefaults對象是用來保存,恢復應用程式相關的偏好設置,配置數據等等

      2)NSUserDefaults創建

  + (NSUserDefaults *)standardUserDefaults

      3)存儲數據

- (void)set[數據類型]:(數據類型)value forKey:(NSString *)defaultName;

      4)同步數據

- (BOOL)synchronize;

      5)讀取數據

- (數據類型)[數據類型]ForKey:(NSString *)defaultName;

 

    2.UITabBarControllerDelegate使用

      1)被選中的時候

    - (void)tabBarController:(UITabBarController *)tabBarController 

      didSelectViewController:(UIViewController *)viewController

#pragma mark- UITabBarControllerDelegate

//已經選擇某一個控制器

-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{

     NSLog(@"當前處於選中狀態的控制器下標為%ld",tabBarController.selectedIndex);

    //記錄

    NSUserDefaults *def = [NSUserDefaults standardUserDefaults];

    [def setInteger:tabBarController.selectedIndex forKey:@"index"];

    //同步到本地

    [def synchronize];
}

 

 

      2)控制TabBarItem能不能選中

    - (BOOL)tabBarController:(UITabBarController *)tabBarController 

      shouldSelectViewController:(UIViewController *)viewController;

//準備選擇某一個控制器(是否能選中該控制器)

-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{

    //viewController 待會選中的控制器對象

    //tabBarController 當前管理的分欄控制器

    //NSLog(@"當前處於選中狀態的控制器下標為%ld",tabBarController.selectedIndex);

    /*錯誤寫法:不允許選中第一個控制器

    if (tabBarController.selectedIndex == 0) {

        return NO;

    }

     */

    if (viewController == tabBarController.viewControllers[0]) {

        return NO;
    }

    //返回YES,可以選中,返回NO,不允許選中

    return YES;
}

 

 

      3)下麵這三個方法主要用於監測對moreViewController中對view controller的edit操作

   

 #pragma mark- UITabBarControllerDelegate

1.//準備開始編輯

-(void)tabBarController:(UITabBarController *)tabBarController willBeginCustomizingViewControllers:(NSArray *)viewControllers{

    

    NSLog(@"willBeginCustomizingViewControllers");

}

2.//準備結束編輯

-(void)tabBarController:(UITabBarController *)tabBarController willEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed{ 

    

    NSLog(@"willEndCustomizingViewControllers");

}

 

3.//已經結束編輯

-(void)tabBarController:(UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed{

    

    //判斷是否改變了順序

    if (changed) {

        

        //記錄標題順序

        NSMutableArray *newArr = [NSMutableArray new];

        

        for (UIViewController *ctl in viewControllers) {

            

            [newArr addObject:ctl.title];

        

        }    

        //保存到本地

        NSUserDefaults *def = [NSUserDefaults standardUserDefaults];

        [def setObject:newArr forKey:@"saveArr"];

        [def synchronize];     

    }

}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 本文是對《大型網站架構設計》(李智慧 著)一書的梳理,類似文字版的“思維導圖” 全文主要圍繞“性能,可用性,伸縮性,擴展性,安全”這五個要素 性能,可用性,伸縮性這幾個要素基本都涉及到應用伺服器,緩存伺服器,存儲伺服器這幾個方面 本文是對《大型網站架構設計》(李智慧 著)一書的梳理,類似文字版 ...
  • 作者:ASO100鏈接:https://zhuanlan.zhihu.com/p/23041522來源:知乎著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。 自從 8 月中旬蘋果向開發者發佈了一封關於“上傳至 App Store 的 App 可設置一套尺寸相同的截圖“的郵件以來, ...
  • CGRect rectInTableView = [tableView rectForRowAtIndexPath:indexPath]; CGRect rectInSuperview = [tableView convertRect:rectInTableView toView:[tableVie ...
  • public class AntivirusActivity extends Activity { TextView tv_init_virus; ProgressBar pb; Message msg; ImageView iv_scanning; LinearLayout ll_content;... ...
  • 項目中創建表格, 引用頭文件 #import "WBDataGridView.h" - (void)viewDidLoad{ [superviewDidLoad]; // Do any additional setup after loading the view. self.view.backgr ...
  • //左右震動效果- (void)shake:(UIView *)view {CGRect frame = view.frame;CAKeyframeAnimation *shakeAnimation = [CAKeyframeAnimation animationWithKeyPath:@"posi ...
  • iOS開發常用國外網站清單 原文地址:iOS開發常用國外網站清單作者:eseedo 工欲善其事必先利其器,最近發現臨時查找一些東西容易浪費時間,花了點時間整理一下常用的網站,方便以後備用。 國內的code4app,ui4app,cocoachina,oschina,csdn就不說了,基本上很好用。不 ...
  • 更多博客請訪問http://blog.csdn.net/dylan_lwb_ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...