tabBar用block实现自定义

- (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];
    [self.window makeKeyAndVisible];

    NSMutableArray *viewContrs=[[NSMutableArray alloc]init];
    for (int i=0; i<5; i++)
    {
        UIViewController *viewContr=[[UIViewController alloc]init];
        viewContr.view.backgroundColor=[UIColor colorWithRed:i*0.2 green:i*0.2 blue:0.5 alpha:0.8];
        [viewContrs addObject:viewContr];
    }
    //创建标签控制器
    tabBarViewContr=[[UITabBarController alloc]init];
    tabBarViewContr.viewControllers=viewContrs;

    //把图片存入5个对象中再存入数组中
    NSMutableArray *items=[[NSMutableArray alloc]init];
    for (int i=0; i<5; i++)
    {
        Items *item=[[Items alloc]init];
        NSString *str=[NSString stringWithFormat:@"%d.jpg",i+1];
        [item setImage:[UIImage imageNamed:str] title:str];
        [items addObject:item];
    }

    //自定义的tabBar
    TabBar *tabBar1=[[TabBar alloc]initWithFrame:tabBarViewContr.tabBar.bounds];
    tabBar1.itemArray=items;
//    tabBar1.delegate=self;
    tabBar1.block=^(TabBar *sender,NSInteger tag){
//        [self tabBar:sender didTag:tag];
        tabBarViewContr.selectedIndex=tag;
    };

//    tabBarViewContr.tabBar.hidden=YES;
    [tabBarViewContr.tabBar addSubview:tabBar1];

    self.window.rootViewController=tabBarViewContr;
    return YES;
}

自定义的TabBar实现文件
- (void)setItemArray:(NSArray *)items
{
    CGFloat width=self.frame.size.width/items.count;
    for (int i=0; i<items.count; i++)
    {
        Items *item=[items objectAtIndex:i];
        UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];
        btn.frame=CGRectMake(i*width, 0, width, self.frame.size.height-15);
        [btn addTarget:self action:@selector(didClicked:) forControlEvents:UIControlEventTouchUpInside];
        btn.tag=i;
        [btn setImage:item.image forState:UIControlStateNormal];
        [self addSubview:btn];

        //显示文字
        UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(i*width, self.frame.size.height-15, width, 15)];
        label.text=item.title;
        label.textAlignment=NSTextAlignmentCenter;
        [self addSubview:label];
    }
}

- (void)didClicked:(UIButton *)sender
{
    if (_delegate&&[_delegate respondsToSelector:@selector(tabBar:didTag:)])
    {
        [_delegate tabBar:self didTag:sender.tag];
    }
    _block(self,sender.tag);
}

tabBar用block实现自定义,布布扣,bubuko.com

时间: 2024-10-16 02:38:01

tabBar用block实现自定义的相关文章

关于在TabBar 中添加按钮,并通过block 或代理在控制器中实现响应

相信很多朋友会遇到在TabBar中添加按钮,并要求点击按钮能够实现一些功能,但是当我们自定义的时候,怎么才能在控制器中响应?通常我会用代理或者block,block性能更好,建议使用. 自定义TabBar类 .h #import <UIKit/UIKit.h> typedef void(^myBlock) (NSArray *composeButton);//给block起别名,用数组来存放点击的Button @interface ZSTabBar : UITabBar @property (

微信小程序如何实现自定义tabBar

小程序开发现在非常火,但是对于后台来说如何做到自定义tabBar呢?下面就来讲解下,如何实现微信小程序登录后根据用户身份权限不同跳转到不同的页面问题.首先需要解决的是:你要把底部导航做成一个公共模板template.wxml中代码:<template name="tabBar"> <view class="tab-bar" style="color: {{tabBar.color}}; background: {{tarBar.backg

自定义底部tabbar的两种方式

第一种:利用系统自带的tabbarItem加一个自定义按钮: #import "SZMTabBarController.h" #import "SZMTabBar.h" #import "SZMHomeViewCtrl.h" #import "SZMNavigationController.h" #import "SZMDiscoerViewCtrl.h" @interface SZMTabBarContr

自定义tabBar在push到下一个界面的时候实现隐藏

今天工作中用到了自定义tabBar,在其中隐藏掉了系统的tabBar,用view自定义一个tabBar,效果还挺好.接下来问题来了,在我push到子页面的时候就出现了tabBar无法隐藏的问题,搞了半天终于弄好了,拿出来与大家一块分享,废话不多说,直入正题. 在自定义的TabBarController.m里写方法-(void)setHidesBottomBarWhenPushed:(BOOL)hidesBottomBarWhenPushed{    self.你自己定义的View.hidden

自定义底部导航栏(tabBar)

前言如果大家用过微信提供的tabBar就会发现,他的tabBar有很大的局限性.暂且不说样式局限性了,他提供的app.json配置文件中没有function.这也就意味着使用它提供的这个组件,你只能用于跳转页面,不能干其它的事情 我YY的 以下是代码说明:小程序的很大异步分思想体现了封装,以提高复用性.对此,一些简单代码我也封装了,考虑到了以后维护的方便性目录结构如下: 图片配置文件:imgURI.js(由于小程序不支持xml和读取本地json,故用js代替) 1 var host="/img/

猫猫学iOS 之微博项目实战(4)微博自定义tabBar中间的添加按钮

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 一:效果图 自定义tabBar实现最下面中间的添加按钮 二:思路 首先在自己的tabBarController中把系统的tabBar设置成自己的tabBar(NYTabBar),这里由于tabBar的属性是readonly的,所以我们要用kvc或者是消息管理来设置他 然后就写自己的NYTabBar.这个写起来首先 遍历当前tabBar上的所有view,如果是UI

小程序自定义tabBar

在page目录下新建一个tabbar文件夹 在tabbar.wxml中: <template name="tabBar"> <view class="tab-bar" style="color: {{tabBar.color}}; background: {{tarBar.backgroundColor}}; {{tabBar.position=='top'? 'top: 0' : 'bottom: 0'}}; {{tabBar.bord

IOS开发系列--TableView、多个TableViewCell、自定义Cell、Cell上画画(故事板+代码方式),ios7tableview索引

在此之前,我们已经创建了一个通过简单的表视图应用程序并显示预定义的图像.在本教程中,我们将继续努力,使应用程序变得更好,: >不同的行显示不同的图像 - 上个教程,我们的所有行显示相同的缩略图.那么不同的食物显示不同的图片不是更好么? >自定义视图单元-我们将展示我们自己的视图来替代默认表单元格样式 显示不同缩略图 在我们更改代码之前,让我们回顾显示缩略图的代码. 最后,我们增加了一个行代码指示UITableView每一行显示"creme_brelee.jpg"这张图片.显

小程序自定义底部tab

首页wxml的代码: <view class="nav" hover-class="none"> <view class="index" bindtap="fresh"> <image class="navbottomicon" src="{{homeOr?srcactive :src}}"></image> <text class=