使用IOS研究院分页栏Tabar(4)
发布五.01, 2012分类 【IOS研究院应用开发】
如需注明原创文章,雨松MOMO程序研究院
一般Tablebar放在屏幕底部会有很多平面按钮,用户可以点击不同的按钮切换屏幕上显示的视图,Tablebar可以使用系统或继承重写它的方法来实现自定义Tablebar,今天我们主要讨论系统的简单使用。
如上图所示,最多只能在系统自带的TableBar屏幕中放置5个。如果超过5个系统会自动生成More按钮,超出的按钮会以列表的形式显示出来。我们来分析一下贴代码。
NSMutableArray * controllers : 将TableBar中的每一个Item存储起来,最后将其整体显示在屏幕上。
NSArray *item :存储必须显示在分页栏中的名称,然后使用for循环依次遍历 ,将其添加到显示视图中。
TableViewController :点击后控制TableBar的显示视图。
最后将其添加到显示视图中。。
TableViewAppDelegate.m
#import "TableViewAppDelegate.h"#import "TableViewController.h"@implementation TableViewAppDelegate@synthesize window = _window;- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ NSMutableArray *controllers = [NSMutableArray array]; NSArray *item = [NSArray arrayWithObjects:@“雨松MOMO”@“若若娃”、“小可爱”、“哇咔咔”、“小老虎”、“学苹果”、“快乐”、“寿司卷”, nil]; //数组数量 int count = [item count]; for (int i = 0; i < count; i++){ //创建Tableviewcontrleler TableViewController * tabViewController = [[TableViewController alloc]initController:[item objectAtIndex:i]]; //设置标题 [tabViewController setTitle:@“雨松MOMO的程序世界”; //绑定tabviewcontroller以响应按钮点击事件 UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:tabViewController]; //设置标题 nav.title = [item objectAtIndex:i]; //设置图片 nav.tabBarItem.image = [UIImage imageNamed:@"title.png"]; ///设置风格为默认风格 nav.navigationBar.barStyle = UIBarStyleDefault; //添加UINavigationcontroller[controllers addObject:nav]; ///释放对象 [nav release];} ///创建UITabarController,将显示的内容添加到UITabarcontrler中 *bar = [[UITabBarController alloc] init];bar.viewControllers = controllers;bar.customizableViewControllers = controllers;///添加到显示窗口[self.window addSubview:bar.view]; // Override point for customization after application launch. [self.window makeKeyAndVisible]; return YES;}@end
如下图所示,多余的Item将以列表的形式显示。
-(id) initController:(NSString *)str :用于初始化,并输入显示内容。在创建TableBar时,将名称作为参数输入,以便用户在每次切换时点击按钮。在此例子中,用户在切换按钮时切换顶部显示的内容。
-(void)viewDidLoad:这种方法很重要,用户不按点击按钮就会重新加载,因为每个Item的Controler都是TableviewControler。如果每个页面显示的内容不确定,可以写更多的Controler类别来控制每个Table页面的切换。
我不会解释里面的代码。之前的博客文章有详细的解释~
TableViewController.m
#import "TableViewController.h"@implementation TableViewController-(id) initController:(NSString *)str{ self = [super init]; if(self) { ///每次点击新标签,showstringg将显示内容值赋予 showString = str; } return self;}- (void)viewDidLoad{ [super viewDidLoad]; ///创建label视图 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 30)]; //设置显示内容 label.text = [NSString stringWithFormat:@“%@%@”showString]; //设置背景色 label.backgroundColor = [UIColor blueColor]; //设置文字颜色 label.textColor = [UIColor whiteColor]; ///在中间设置显示位置 label.textAlignment = UITextAlignmentCenter; //设置字体大小 label.font = [UIFont fontWithName:[[UIFont familyNames] objectAtIndex:10] size:20]; ///创建图片视图 UIImageView *imageview = [[UIImageView alloc] initWithFrame: CGRectMake(100, 150, 120, 120)]; ////设置图片显示的资源路径 [imageview setImage:[UIImage imageNamed:@"0.jpg"]]; //添加到视图中 [self.view addSubview:label]; [self.view addSubview:imageview]; ///释放对象 [label release]; [imageview release];}- (void)viewDidUnload{ [super viewDidUnload]; // Release any retained subviews of the main view. // e.g. self.myOutlet = nil;}@end