IOS分页栏TabBar的使用(四)

本文详细介绍了如何利用系统自带的TableBar功能,通过编写代码实现多个视图之间的平滑切换。从创建控制器、设置标题、图片及导航栏样式等关键步骤逐一解析,并展示了代码实现过程,旨在帮助开发者快速掌握这一实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       一般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"
03  
04 @implementation TableViewAppDelegate
05  
06 @synthesize window = _window;
07  
08 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
09 {
10  
11     NSMutableArray *controllers = [NSMutableArray array];
12  
13     NSArray *item = [NSArray arrayWithObjects:@"雨松MOMO",@"若若娃",@"小可爱",@"哇咔咔",@"小老虎",@"学苹果",@"快乐乐",@"寿司卷", nil];
14  
15     //数组数量
16     int count = [item count];
17  
18     for (int i = 0; i < count; i++)
19     {
20  
21         //创建TableViewController
22         TableViewController * tabViewController = [[TableViewController alloc]initController:[item objectAtIndex:i]];
23  
24         //设置标题
25         [tabViewController setTitle:@"雨松MOMO的程序世界"];
26  
27         //绑定tabViewController用来响应按钮点击事件
28         UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:tabViewController];
29  
30         //设置标题
31         nav.title = [item objectAtIndex:i];
32  
33         //设置图片
34         nav.tabBarItem.image = [UIImage imageNamed:@"title.png"];
35  
36         //设置风格为默认风格
37         nav.navigationBar.barStyle = UIBarStyleDefault;
38  
39         //添加这个UINavigationController
40         [controllers addObject:nav];
41  
42         //释放对象
43         [nav release];
44     }
45  
46     //创建UITabBarController,将显示的内容添加进去
47     UITabBarController *bar = [[UITabBarController alloc] init];
48     bar.viewControllers = controllers;
49     bar.customizableViewControllers = controllers;
50  
51     //添加到显示窗口中
52     [self.window addSubview:bar.view];  
53  
54     // Override point for customization after application launch.
55     [self.window makeKeyAndVisible];
56     return YES;
57 }
58 @end

 如下图所示,多余的Item会以列表的形式展示。

 

 

 

 

-(id) initController:(NSString *)str :用于初始化,将显示内容传入。创建TableBar的时候将名称作为参数传入这样每次切换的时候知道用户点击了那个按钮。这个例子用户切换点击按钮的时候将切换顶部的显示内容。

-(void)viewDidLoad:这个方法很重要,用户没按点击按钮都会重新加载,因为上面设置了每个Item的Controller都是TableViewController,如果每个页面显示的内容都不确定的话,可以多写几个Controller类来控制每一个Table页面的切换。

里面的代码我就不多解释了,之前的博文有详细的说明噢~

TableViewController.m

01 #import "TableViewController.h"
02  
03 @implementation TableViewController
04  
05 -(id) initController:(NSString *)str
06 {
07  
08     self = [super init];
09     if(self)
10     {
11         //每次点击新的标签,将显示内容值赋给showString
12         showString = str;
13     }
14     return self;
15 }
16  
17 - (void)viewDidLoad
18 {
19     [super viewDidLoad];
20  
21     //创建label视图
22     UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 30)];
23     //设置显示内容
24     label.text = [NSString stringWithFormat:@"%@%@",@"您选中了",showString];
25  
26     //设置背景颜色
27     label.backgroundColor = [UIColor blueColor];
28     //设置文字颜色
29     label.textColor = [UIColor whiteColor];
30     //设置显示位置居中
31     label.textAlignment = UITextAlignmentCenter;
32     //设置字体大小
33     label.font = [UIFont fontWithName:[[UIFont familyNames] objectAtIndex:10] size:20]; 
34  
35     //创建图片视图
36     UIImageView *imageview = [[UIImageView alloc] initWithFrame:
37                  CGRectMake(100, 150, 120, 120)]; 
38  
39     //设置图片的显示的资源路径
40     [imageview setImage:[UIImage imageNamed:@"0.jpg"]]; 
41  
42     //添加到视图中
43     [self.view addSubview:label];
44     [self.view addSubview:imageview];
45  
46     //释放对象
47     [label release];
48     [imageview release];
49 }
50  
51 - (void)viewDidUnload
52 {
53     [super viewDidUnload];
54     // Release any retained subviews of the main view.
55     // e.g. self.myOutlet = nil;
56 }
57  
58 @end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值