一般TableBar放置在屏幕的最下方会有很多平级的按钮,用户可以击不同的按钮切换屏幕中显示的视图,TableBar可以使用系统自带的也可以自己继承重写它的方法实现自定义TableBar,今天我们主要讨论系统自带的TableBar的简单使用。

如上图所示,系统自带的TableBar屏幕中最多只可以放置5个,如果超过5个系统会自动生成一个More按钮,会将超出的以一个列表的形式展现出来,贴出代码我们分析一下。
NSMutableArray * controllers : 存放TableBar中的每一个Item,最后将它整体显示在屏幕中。
NSArray *item :存放着须要在分页栏中显示的名称,之后使用for循环依次遍历 ,将其添加入显示视图。
TableViewController :控制TableBar点击后的显示视图。
最后把它添加到显示视图当中。。
TableViewAppDelegate.m
01 | #import "TableViewAppDelegate.h" |
02 | #import "TableViewController.h" |
04 | @implementation TableViewAppDelegate |
06 | @synthesize window = _window; |
08 | - ( BOOL )application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions |
11 | NSMutableArray *controllers = [NSMutableArray array]; |
13 | NSArray *item = [NSArray arrayWithObjects:@ "雨松MOMO" ,@ "若若娃" ,@ "小可爱" ,@ "哇咔咔" ,@ "小老虎" ,@ "学苹果" ,@ "快乐乐" ,@ "寿司卷" , nil]; |
16 | int count = [item count]; |
18 | for ( int i = 0; i < count; i++) |
22 | TableViewController * tabViewController = [[TableViewController alloc]initController:[item objectAtIndex:i]]; |
25 | [tabViewController setTitle:@ "雨松MOMO的程序世界" ]; |
28 | UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:tabViewController]; |
31 | nav.title = [item objectAtIndex:i]; |
34 | nav.tabBarItem.image = [UIImage imageNamed:@ "title.png" ]; |
37 | nav.navigationBar.barStyle = UIBarStyleDefault; |
40 | [controllers addObject:nav]; |
47 | UITabBarController *bar = [[UITabBarController alloc] init]; |
48 | bar.viewControllers = controllers; |
49 | bar.customizableViewControllers = controllers; |
52 | [self.window addSubview:bar.view]; |
55 | [self.window makeKeyAndVisible]; |
如下图所示,多余的Item会以列表的形式展示。

-(id) initController:(NSString *)str :用于初始化,将显示内容传入。创建TableBar的时候将名称作为参数传入这样每次切换的时候知道用户点击了那个按钮。这个例子用户切换点击按钮的时候将切换顶部的显示内容。
-(void)viewDidLoad:这个方法很重要,用户没按点击按钮都会重新加载,因为上面设置了每个Item的Controller都是TableViewController,如果每个页面显示的内容都不确定的话,可以多写几个Controller类来控制每一个Table页面的切换。
里面的代码我就不多解释了,之前的博文有详细的说明噢~
TableViewController.m
01 | #import "TableViewController.h" |
03 | @implementation TableViewController |
05 | -(id) initController:(NSString *)str |
22 | UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 30)]; |
24 | label.text = [NSString stringWithFormat:@ "%@%@" ,@ "您选中了" ,showString]; |
27 | label.backgroundColor = [UIColor blueColor]; |
29 | label.textColor = [UIColor whiteColor]; |
31 | label.textAlignment = UITextAlignmentCenter; |
33 | label.font = [UIFont fontWithName:[[UIFont familyNames] objectAtIndex:10] size:20]; |
36 | UIImageView *imageview = [[UIImageView alloc] initWithFrame: |
37 | CGRectMake(100, 150, 120, 120)]; |
40 | [imageview setImage:[UIImage imageNamed:@ "0.jpg" ]]; |
43 | [self.view addSubview:label]; |
44 | [self.view addSubview:imageview]; |
53 | [super viewDidUnload]; |