UI第七天

一些概念:

1. //NSUserDefaults

    //iOS中有很多种方式来做本地化数据存储,之前我们学过的归档解档,plist文件

    //NSUserDefaults也是用来做本地化数据存储,它是轻量级的,它是以一种特殊的路径存储在手机中的,它存储的数据类型是有限制的,它类似于plist文件,存储的类型包括:NSArrayNSDictionaryNSDataNSStingNSNumberNSBoolNSDate,注意:不能存储自定义的对象,在NSArrayNSDictionary中只能存储以上类型

    

    //获得单例对象

    NSUserDefaults *user = [NSUserDefaults standardUserDefaults];

    //添加键值对 将数据添加到单例对象中

    [user setInteger:1 forKey:@"index"];

    //将数据同步到本地

    [user synchronize];

    

    //获取数据

    [user integerForKey:@"index"];


2.//什么是标签栏控制器?

    //它是UITabBarController的对象,它是用于管理视图控制器的,它继承自UIViewController,它的管理方式是数组的管理方式,特点就是数组中的元素之间是互不相扰的,他们之间是平行关系

    //导航控制器是继承自UIViewController,他是视图控制器的管理器,他是通过栈的管理方式来管理视图控制器,栈的特点是先进后出,元素之间是存在一定的联系的。

    //UINavigationController 导航控制器

    //UINavigationBar 导航栏

    //UINavigationItem 导航栏项

    

    //UITabBarController 标签栏控制器

    //UITabBar 标签栏

    //UITabBarItem 标签栏项


//第一种

    ViewController1 *vc1 = [[ViewController1 alloc] init];

    //设置标签栏项的标题

    vc1.tabBarItem.title = @"提莫";

    //设置标签栏项在正常状态下的图片

    vc1.tabBarItem.image = [UIImage imageNamed:@"tab_0"];

    //设置标签栏项在选中状态下的图片

    vc1.tabBarItem.selectedImage  = [UIImage imageNamed:@"tab_s"];

    UINavigationController *navi1 = [[UINavigationController alloc] initWithRootViewController:vc1];

    //第二种(常用)

    ViewController2 *vc2 = [[ViewController2 alloc] init];

    

    vc2.tabBarItem = [[UITabBarItem alloc]initWithTitle:@"" image:[UIImage imageNamed:@"tab_1"] selectedImage:[UIImage imageNamed:@"tab_s"]];

    UINavigationController *navi2 = [[UINavigationController alloc] initWithRootViewController:vc2];

    //第三种 设置系统样式的标签栏项(用的少)

    ViewController3 *vc3 = [[ViewController3 alloc] init];

    vc3.tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemBookmarks tag:0];

    UINavigationController *navi3 = [[UINavigationController alloc] initWithRootViewController:vc3];

    //第四种

    ViewController4 *vc4 = [[ViewController4 alloc] init];

    vc4.tabBarItem = [[UITabBarItem alloc]initWithTitle:@"" image:[UIImage imageNamed:@"tab_2"] tag:0];

    

    //设置徽标 一定要注意这个属性是需要接收字符串类型的

    vc4.tabBarItem.badgeValue = @"5";

    UINavigationController *navi4 = [[UINavigationController alloc] initWithRootViewController:vc4];

    NSArray *viewControllers = @[navi1,navi2,navi3,navi4];

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

    tabBarC.viewControllers = viewControllers;

    //设置默认选中项

//    tabBarC.selectedIndex = 2;

    

    tabBarC.selectedViewController = viewControllers[1];

    

    self.window.rootViewController = tabBarC;


3.//更改标签栏项上的标题颜色

        [VC.tabBarItem setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor redColor]} forState:UIControlStateSelected];



一些实用方法:

1.判断程序是不是第一次启动:

    NSUserDefaults *user = [NSUserDefaults standardUserDefaults];

    

    BOOL isFirst = [user boolForKey:@"isFirst"];

    

    label.text = isFirst?@"不是第一次启动":@"是第一次启动";

    

    if (!isFirst) {

        NSUserDefaults *user = [NSUserDefaults standardUserDefaults];

        [user setBool:YES forKey:@"isFirst"];

        //数据同步到本地

        [user synchronize];

    }


2.不导入其他viewController的头文件,在AppDelegate中声明其他viewController


 NSString *VCName = [NSString stringWithFormat:@"ViewController%d",i+1];

 Class myClass = NSClassFromString(VCName);

 UIViewController *VC = [[myClass alloc] init];


3.进入程序然后退出,下次再进此程序,还在上次退出时的位置

(1).AppDelegate 遵守<UITabBarControllerDelegate>

(2)建立代理关系

    tabBarC.delegate = self;

(3)

 NSUserDefaults *user = [NSUserDefaults standardUserDefaults];

    NSInteger index = [user integerForKey:@"index"];

(4).

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController

{

    NSLog(@"%ld",tabBarController.selectedIndex);

    NSUserDefaults *user = [NSUserDefaults standardUserDefaults];

    [user setInteger:tabBarController.selectedIndex forKey:@"index"];

    [user synchronize];

 }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值