IOS:IOS UITabBarController storybroad 点滴笔记

来源:互联网 发布:packetsender mac 编辑:程序博客网 时间:2024/05/21 17:37

文章来自:http://blog.csdn.net/intbird

学习笔记记录一下,直接将TabBarController作为根布局,基于storyborad的UITabBarController等

我之前以为直接使用tabBar控件,然后在tabBar的点击事件上做一些东西就可以切换ViewController了,我现在还没找到这样写的例子,回头在看看;
直接使用TabBarController是比较简单的,直接关联好子ViewController即可,见4;
没有理头的开始;
1.新建一个项目,如果有main.storyborad,删掉,在项目上点击右键,在 main interface上去掉勾选,这样自己写主的加载界面,当然可以自己指定一个界面,当然默认的就是 main.
这里写图片描述

*2, 如是,在AppDelegate.h中声明一个 tabBarViewController变量,稍后在AppDelegate.m中初始化;然后AppDelegate.m在添加如下代码,初始化一个UITabbarViewController作为根布局界面;
AppDelegate.h ,多添加了个协议和tabBar变量; *

#import <UIKit/UIKit.h>#import <CoreData/CoreData.h>@interface AppDelegate : UIResponder <UIApplicationDelegate,UITabBarControllerDelegate>@property (strong, nonatomic) UIWindow *window;@property (strong, nonatomic) UITabBarController *tabBarViewController;

AppDelegate.m 和显示一个界面大同小异,只是界面换为tabBarViewController而不是ViewController;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    // Override point for customization after application launch.    self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];    FavViewController* favView = [[FavViewController alloc] initWithNibName:nil bundle:NULL];    favView.title = @"Favrite";    ContViewController* contView = [[ContViewController alloc] initWithNibName:NULL bundle:NULL];    contView.title = @"Contact";    RecentViewController * recentView = [[RecentViewController alloc] initWithNibName:NULL bundle:NULL];    recentView.title = @"Recent";    self.tabBarViewController = [[UITabBarController alloc]init];    self.tabBarViewController.delegate = self;    self.tabBarViewController.viewControllers = [NSArray arrayWithObjects:favView, contView,recentView, nil];    self.window.rootViewController = self.tabBarViewController;    [self.window makeKeyAndVisible];    return YES;}

FavViewController.h FavViewController.m的界面FavViewController.xib文件的创建;在上一篇ios的日志里也写过,这里重新记录一下
01,可以选择新建一个 Source->cocoa touch Class 勾选上创建xib文件;
这里写图片描述
02,如果是上面一步没有勾选,或者单独创建了三个类,那么对它们进行关联如下操作:在xib的 fileOwer上选择对应的ViewController,(如果是storybord,没有fielOwer选项,是可以点选关联的);
如图,关联class和拖动fileOwer到View,关联好;
这里写图片描述

3 那么运行是这个样子的
这里写图片描述
那为什么下面会显示样子不一样呢,应该没有img的呀,我之前拖动一个TabViewController到storybord上看到有个系统的style可以选,搜了一下看到在 子ViewController上,只要添加如下代码即可,即让子ViewController具有系统的tabbarItem的样子;

FavViewController.m

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];    if (self) {        UITabBarItem *item = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemMostRecent tag:1];        self.tabBarItem = item;        self.tabBarItem.badgeValue = [NSString stringWithFormat:@"%d",9];    }    return self;}

4,直接使用storybord推拽一个tabBarController,在界面上直接关联四个ViewController很简单;
01,单独新建一个项目,初始时只有main.storybord;在main.storybord的 viewController上,选择xcode工具栏的Editor->embed in->tabBarViewController,这样就把根UIViewController变成了UITabBarController;
02,在main.storybord中添加三个普通的UIViewController,进行如图所做操作;
这里写图片描述
03 运行后是这个样子的
这里写图片描述
这里写图片描述

5,UITabBarController点击事件,这个要研究一下,看这个委托里不少方法

-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item{    UIAlertView *alert = [[UIAlertView alloc]                          initWithTitle:@"切换tabBar"                          message:[NSString stringWithFormat:@"%lu",[tabBar.items indexOfObject:item]]                          delegate:self                          cancelButtonTitle:@"YES"                          otherButtonTitles:nil,                          nil];    [alert show];}

这里写图片描述

demo地址:http://download.csdn.net/detail/intbird/8720991

0 0
原创粉丝点击