知識點: 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]; } }