标签视图

一、标签视图控制器 UITabBarController
二、UITabBar
三、UITabBarItem
四、三大视图控制器综合使用
五、Block高级

UITabBarController组成
Tab Bar Controller View、custom Content、Tab bar
重要属性
这里写图片描述

UITabBar
tabBar是UITabBar对象,包含多个UITabBarItem,每一个tabBarItem对应一个ViewController。tabBar高度49
当tabBarItem超过5个,系统会自动增加一个更多按钮,点击更多按钮显示为在列表上显示的按钮
tabBar属性:tintColor、barTintColor、图像属性
TabBarItem可以设置title、image、badgeVague,也可以是使用系统样式创建TabBarItem;
如果想通过一键设定所有视图控制器的的颜色,例如QQ一键换肤,可以用UIAppearance.

UITabBarController是项目开发常见布局,与UINavigationController不同,它的ViewControllers是并列的,UINavigationController是层次性的
UITabBarController、UINavigationController、UItableViewController通常组合出现。
UITabBarController、UINavigationController可以相互套嵌

Block高级
1、Block是匿名函数,能够实现函数回调功能
2、用于页面之间通信,同时可以进行传值。
3、定义属性接受Block,必须用copy修饰,retain无效,会造成野指针问题
4、block在某个方法中定义时存储在栈区,在另个类中使用需要进行copy,存储在堆区
5、当不使用block时需要销毁,在dealloc中要使用对应的Block_Release()

注意事项:循环使用的问题
在Block实现部分,不能直接使用实例变量,self调用属性,因为Block会造成self引用计数加1,最终导致循环引用问题。
使用__Block解决循环引用的问题

代码实例

#import "AppDelegate.h"
#import "FirstViewController.h"
#import "SecondViewController.h"
#import "ThirdViewController.h"
#import "FourthViewController.h"

@interface AppDelegate ()

@end

@implementation AppDelegate
- (void)dealloc
{
    [_window release ];
    [super   dealloc ];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    self.window =[[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];

//第一个视图控制器
    FirstViewController * firstVC =[[FirstViewController alloc]init];

    //设置tabBarButton上的标题
    //firstVC.tabBarItem.title = @"首页";
    //自己创建tabBarItem
    firstVC.tabBarItem = [[[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemSearch tag:101 ]autorelease];
 //第二个视图控制器对象

    SecondViewController * secondVC =[[SecondViewController alloc]init];
    secondVC.tabBarItem = [[[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemContacts tag:102]autorelease];

//第三个视图控制器

    ThirdViewController * thirdVC =[[ThirdViewController alloc]init];

    thirdVC.tabBarItem = [[UITabBarItem alloc]initWithTitle:@"message" image:[UIImage imageNamed:@"123.png" ] tag:103];
    thirdVC.tabBarItem.badgeValue = @"99+";


    UITabBarController * TBC = [[UITabBarController alloc]init  ];
    _window.rootViewController    = TBC;
   //给thirdVC添加导航控制器
    UINavigationController * NC1 = [[UINavigationController alloc]initWithRootViewController:thirdVC];


//第四个视图控制器对象
    FourthViewController * fourthVC = [[FourthViewController alloc]init];
    fourthVC.tabBarItem = [[UITabBarItem alloc]initWithTitle:@"" image:[UIImage imageNamed:@"1234.png" ]selectedImage:[UIImage imageNamed:@"123.png"]];
    //fourthVC.



    //将firstVC添加到数组中,接受管理
    TBC.viewControllers = @[firstVC,secondVC,NC1 ,fourthVC];

#pragma mark -----设置tabbar相关的属性(颜色,控件的颜色);
    //1.设置tabbar颜色
    TBC .tabBar.barTintColor = [UIColor brownColor];
    //2.设置tabbar上控件的颜色
    TBC.tabBar.tintColor = [UIColor purpleColor];
    //3.设置默认选中哪个UITableBarButton
    TBC.selectedIndex = 2;
    //设置代理
    TBC.delegate = self;


    //释放
    [firstVC release];
    [secondVC release];
    [TBC release];

    [_window makeKeyAndVisible ];
    [_window release];
    return YES;
}

#pragma mark-----实现协议中的方法
//当tabBar上某个tabBarButton被点中时,触发这个方法
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    NSLog(@"%@",[viewController class]);
    viewController.tabBarItem.badgeValue = nil;
}

Block相关用法示例

RootViewController.m
#import "RootViewController.h"
#import "FirstViewController.h"
@interface RootViewController ()

@end

@implementation RootViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.view.backgroundColor    = [UIColor purpleColor];

    [self createRightBarButtonItem];
#pragma mark-----创建rightBarButtonItem
    [self createButton];
}

- (void)createButton
{
    UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(100, 100, 60, 40);
    button.backgroundColor = [UIColor redColor];
    [button addTarget:self action:@selector(didClickButton:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
}
- (void)didClickButton:(UIButton *)button
{
    FirstViewController * firstVC = [[FirstViewController alloc]init];
    [self.navigationController pushViewController:firstVC animated:YES];
    [firstVC release];
    //或者[self didClickRightBI:nil];
    //②.当点击Button按钮的时候,调用Block,调用的形式:Block变量名(实参列表)

    [firstVC view];
    _block(button.backgroundColor);

}

- (void) createRightBarButtonItem
{
    UIBarButtonItem * BI =  [[UIBarButtonItem alloc]initWithTitle:@"PUSH" style:UIBarButtonItemStylePlain target:self action:@selector(didClickBI:)];
    self.navigationItem.rightBarButtonItem = BI;

     [BI release];
}

- (void)didClickBI:(UIBarButtonItem *)BI
{
    FirstViewController  * firstVC =[[FirstViewController alloc]init];
    [self.navigationController pushViewController:firstVC animated:YES];
    [firstVC release];


}
//firstViewController.h文件

#import <UIKit/UIKit.h>
typedef void(^BLOCK)(UIColor*);
@interface FirstViewController : UIViewController

@end
//firstViewController.m文件

#import "FirstViewController.h"
#import "RootViewController.h"
//typedef int(^BLOCK)(int, int);
@interface FirstViewController ()
@property(nonatomic,copy)BLOCK  block;
@end

@implementation FirstViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    self.view.backgroundColor= [UIColor yellowColor];


   RootViewController * controller =(RootViewController*)self.navigationController.viewControllers[0];

    controller.block  = ^void(UIColor * color){

        self.view.backgroundColor = color;

    };
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
针对吉林省农村信用社联合社数据中心对标签视图的建设,以下是一些建议: 1. 梳理业务场景和需求:在建设标签视图之前,需要对不同的业务场景和需求进行深入的了解和梳理,明确需要哪些标签,以及这些标签的分类和组织方式。 2. 制定标签管理规范:标签视图的建设需要遵循一定的管理规范和标准,例如标签名称、描述、类别、属性等的定义和规范,标签的创建、删除、修改等的流程和权限等。 3. 设计标签分类和组织结构:标签视图应该根据业务场景和需求进行分类和组织,例如按照客户、产品、渠道、市场、风险等进行分类,再根据不同的标签类型和属性进行细分和组织。 4. 建立标签管理平台:建立一个标签管理平台,用于管理标签库和标签视图,包括标签的创建、修改、删除、分类、组织等功能。 5. 定期维护和更新:标签视图是一个动态的过程,需要不断地维护和更新,例如添加新的标签、删除无用的标签、更新标签的属性和分类等。 6. 提供培训和支持:对于标签视图的建设和使用,需要提供相应的培训和支持,帮助用户了解标签的定义和使用方式,提高标签的使用效率和准确性。 综上所述,建设标签视图需要全面考虑业务需求和场景,遵循一定的管理规范和标准,设计合理的分类和组织结构,建立标签管理平台,定期维护和更新,并提供相应的培训和支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值