知識點:
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];
}
}
【iOS開發-UI (十一) UITabBarController】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!