0829-0607 UITabBarController-QQ框架界面搭建

0829-0607归档

NSKeyedArchever保存数据到Documents中    实际开发中会使用SQLite3  推荐的方式   因为数据量大   SQLite3性能好

这里 我们使用的是:

登录界面使用NSUserDefaults

 

联系人界面使用 NSkeyedArchiver

 ----------------------

 

UITabBarController  

使用步骤

1、将控制器的视图交给self.window.rootViewController = tbVc (view高度480 并有子控制器tabBar 高度49)

2、tbVc addChildViewController:vc1(UIViewController)   或者tbVc.viewControllers = @[vc1,vc2]

运行程序点击navigationBar上item的时候  是执行的push操作


 

UITabBarController *tb1 = [[UITabBarController alloc] init];

self.window.rootViewController =tb1;   将tabBarController的.view交给 self.window.view

//    tb1.view{{0, 0}, {320, 480}} 

//    tb1.view addSubview:子控制器的view {{0, 0}, {320, 480}}     ios6里面的高度是431
//    tb1.view addSubview:tb1.tabBar {{0, 431}, {320, 49}}

 tabBarController添加自控制器的时候  会将第一个子自控制器最先显示   其他自控制器在点击下面的tabBar上的某个item的时候显示

 

tb1.viewControllers = @[vc1,vc2] //vc1=UIViewController   vc1.tabBarItem.title = @"联系人"    vc1默认有tabBarItem

vc1.tabBarController.tabBar

tb1.tabBar.items  tb1.tabBar.subviews

UITabBarItem 属性包括 title image selectedImage badgeValue (如10)

appDelegate.m里

self.window makeKeyAndVisible 是成为application的主窗口 application.keyWindow

- (void)applicationDidBecomeActive:(UIApplication *)application

里面 开始创建主窗口

//  HMAppDelegate.m
// UITabBarController-空项目

#import "HMAppDelegate.h"

@implementation HMAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    
    UITabBarController *tab = [[UITabBarController alloc] init];
    self.window.rootViewController = tab;
    
    UIViewController *vc1 = [[UIViewController alloc] init];
    vc1.view.backgroundColor = [UIColor redColor];
    vc1.tabBarItem.title = @"消息";
    vc1.tabBarItem.image = [UIImage imageNamed:@"tab_recent_nor"];
//    [tab addChildViewController:vc1];
    
    UIViewController *vc2 = [[UIViewController alloc] init];
    vc2.view.backgroundColor = [UIColor redColor];
    vc2.tabBarItem.title = @"联系人";
    vc2.tabBarItem.image = [UIImage imageNamed:@"tab_buddy_nor"];

    vc2.view.backgroundColor = [UIColor greenColor];
    
//    [tab addChildViewController:vc2];
    
    UIViewController *vc3 = [[UIViewController alloc] init];
    vc3.view.backgroundColor = [UIColor redColor];
    vc3.tabBarItem.title = @"动态";
    vc3.tabBarItem.image = [UIImage imageNamed:@"tab_qworld_nor"];

    vc3.view.backgroundColor = [UIColor blueColor];
    
//    [tab addChildViewController:vc3];
    
    tab.viewControllers = @[vc1,vc2,vc3];
    
    [self.window makeKeyAndVisible];
    return YES;
}

 -----------------

UITabBarController的拖storyboard

1、拖UITabBarController   删除2个UIViewController控件

2、自己拖一个UIViewController控件vc1

3、右键UITabBarController 看到view controllers 拖到vc1上面

--------

应用程序进入后台休眠 不接收事件

 

Command +Shift + 2此点击H 程序进入后台后

应用程序里面的所有时间都不接收 这是后向上推把程序关闭也不会调用下面的方法  

 

音乐播放器后面会讲到进入后台不要进入休眠状态

---------------

QQ框架界面搭建(主流)

现有TabBarController 后有navigationController

有了这个可以自己搭建很多种框架了

1、storyboard搭建界面    先删除viewController控件   自己拖一个TabBarController(属性设置为启动控制器init view controller)   删除TabBarController指向的2个ViewController

2、拖几个NavigationController 

3、右键TabBarController 找到viewControllers 连线几个NavigationController 这时候所有的navigatinController下面会显示他的navigationItem  设置每个navigationItem的值

为联系人、消息、

4、设置每个navigationController控件push的 UIViewController   头部的navigationBar 左边右边各加一个 UIBarButtonItem

5、设置其中一个UITableViewController的静态单元格   先分组模式  然后设置3组    每一组的cell   ctrl + c ctrl +v 设置几行

拖动第一个cell把这个cell拉高一点

第某个cell设置style为right detail  ,   然后设置 lines为0 (multi lines =0 表示换行),修改里面的文字 再拉高cell

6、新建一个tableViewController tv111,选择某个cell push到tv111    tv111的头部-tablewHeaerView放一个UIView  里面拖一个UIImageView 和一个 UILabel

tv111设置 勾选Hide Bottom Bar On Push

7、代码创建控制器 storyboard中的控制器与其对应  这里新创建的FFAddTableViewController 默认创建的时候 -numberofrowsInSection** -numberOf*** 都是 return 0

而stroyboard里的 tableViewController是静态单元格  所以需要删除这2个方法

 

 

 

 

先有UITabBarController   tb.viewControllers = 几个导航控制器   (导航控制器继承UIViewController和其实平级的  只是在push的时候会共享一个navigationbar)

 

vc1.navigationItem setLeftBarButtonItems设置左边的一些barButtonItem   

vc1.navigationItem setLeftBarButtonItem设置左边的barButtomItem

------------

QQ框架界面搭建(非主流 )

有缺陷  所以一般不适用这种搭建结构

现有UINavigationController 后有 UITabBarController

1、清空stroyboard中原有的控制器  拖一个UINavigationController

2、UINavigationController原有的UIViewController  拖一个UITabBarConroller tbVc1

3、右击UINavigationController设置 rootViewController 为tbVc1

4、设置tbVc1的自控制器控件的属性item字体 iamgeView  selectedImageView badgedNumber

 

-----------

其他:

[view1 isKindOfclass:[UIImageView class]]  判断是否是UIImageView

[view1 isMemberOfclass:[UIImageView class]]  判断是否是UIImageView或者UIImageView的子类

 self.parentViewController

 

你可能感兴趣的:(0829-0607 UITabBarController-QQ框架界面搭建)