iOS開發-UI (十一) UITabBarController,iosui開發

來源:互聯網
上載者:User

iOS開發-UI (十一) UITabBarController,iosui開發

知識點:

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- UITabBarControllerDelegate1.//準備開始編輯-(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];         }}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.