自定义tabbar,点击中间按钮不切换页面,而是让当前的子视图控制器跳转到新页面。(类似新浪微博发布)

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.delegate = self;
    /************************隐藏tabbar上的黑色线条***************************/
    CGRect rect = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [[UIColor clearColor] CGColor]);
    CGContextFillRect(context, rect);
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    [self.tabBar setBackgroundImage:img];
    [self.tabBar setShadowImage:img];
    /************************隐藏tabbar上的黑色线条***************************/

    UITabBarItem *item1 = [[UITabBarItem alloc]initWithTitle:@"首页" image:[[UIImage imageNamed:@"tabbar_home"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] tag:0];
    item1.selectedImage = [[UIImage imageNamed:@"tabbar_home_selected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    UITabBarItem *item2 = [[UITabBarItem alloc]initWithTitle:@"" image:[[UIImage imageNamed:@"tabbar_order"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] tag:0];
    UITabBarItem *item3 = [[UITabBarItem alloc]initWithTitle:@"我的" image:[[UIImage imageNamed:@"tabbar_person"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] tag:0];
    item3.selectedImage = [[UIImage imageNamed:@"tabbar_person_selected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

    NSArray *controllers = @[@"HomePage",@"Order",@"Person"];
    for (int i = 0; i < 3; i++) {
        Class cls = NSClassFromString([NSString stringWithFormat:@"%@ViewController",controllers[i]]);
        UIViewController *controller = (UIViewController *)[[cls alloc] init];
        UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:controller];
        nc.tabBarItem = @[item1,item2,item3][i];
        [self addChildViewController:nc];
    }

    UIImageView *tabbarView = [[UIImageView alloc] initWithFrame:CGRectMake(0, self.tabBar.frame.size.height - 61, SCREEN_WIDTH, 61)];
    tabbarView.image = [UIImage imageNamed:@"tabbar"];
    [self.tabBar addSubview:tabbarView];

}

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
    if (viewController == self.viewControllers[1]) {
        //点击中间tabbarItem,不切换,让当前页面跳转
        OrderViewController *order = [[OrderViewController alloc] init];
        order.hidesBottomBarWhenPushed = YES;
        [(UINavigationController *)tabBarController.selectedViewController pushViewController:order animated:YES];
        return NO;
    }
    return YES;
}
时间: 2024-08-10 21:30:21

自定义tabbar,点击中间按钮不切换页面,而是让当前的子视图控制器跳转到新页面。(类似新浪微博发布)的相关文章

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

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

中间凸出(百思tabbar上面修改) 按钮范围,nav改色。

// // WMTabBarController.m // 百思不得姐 // // Created by 王蒙 on 15/7/22. // Copyright (c) 2015年 wm. All rights reserved. // #import "WMTabBarController.h" #import "FirstViewController.h" #import "SecondViewController.h" #import &q

iOS_book 02 - 基本交互(约束、视图控制器、基本控件:按钮、文本框、分段控件、开关、标签、图像控件)

实现基本交互 MVC模式 Cocoa Touch 设计者们采用MVC(Model-View-Controller, 模型 - 视图 - 控制器)模式作为指导原则. MVC 模式把代码功能划分为3个不同的类别. 模型: 保存应用程序数据的类. 视图:包括窗口.控件以及其他一些用户可以看到并能与之交互的元素. 控制器:把模型和视图绑定在一起的代码,包括处理用户输入的应用程序逻辑. MVC的目标最大限度地分离这三类代码.MVC可以帮助确保代码的最大可重用性. 控制器组件通常有应用程序的具体类组成.控制

003-多视图控制器切换

多视图控制器切换 1.容器的概念 • 一个iOS的app很少只由一个ViewController组成,除非这个app极其简单.当app中有多个ViewController时,就需要对这些ViewController进行管理 • 容器的概念:负责展示一个或者多个ViewController,并管理这些 ViewController的生命周期 • ?部分容器本身也是一个ViewController,被容器管理的控制器称为容器的?控制器(childViewController),?容器被称为父控制器(

猫猫学iOS(四十三)之网易彩票底部自定义TabBar实现切换

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 效果: 代码: NYTabBarController // // NYTabBarController.m // 彩票lottery // // Created by apple on 15-5-9. // Copyright (c) 2015年 znycat. All rights reserved. // #import

iOS开发项目之四 [ 调整自定义tabbar的位置与加号按钮的位置]

自定义tabbar与按钮的添加 01 - 把系统的tabbar用我们自己的覆盖 LHQTabBar *lhqTabBar = [[LHQTabBar alloc]init]; [self setValue:lhqTabBar forKeyPath:@"tabBar"]; 02 对于系统私有的属性,可以通过运行时或者KVC 03 设置每个tabbar的位置 //2 调整UItabbarBtn的大小 //2.1先定义每个tabbar的宽度 CGFloat tabbarBtnW = self

iOS开发之功能模块--关于自定义TabBar条

只上项目中用到的代码: 1.实现重写TabBar的TabBarItem,然后在中间额外加一个按钮. 1 #import <UIKit/UIKit.h> 2 3 @interface BikeTabBar : UITabBar 4 5 @end 1 #import "BikeTabBar.h" 2 3 @interface BikeTabBar () 4 5 //@property (nonatomic,weak)UIButton *centerButton; 6 7 @en

自定义TabBar

UITabBarController是在IOS应用开发中很常用的一个类,继承于UIViewController,来实现多个视图间的切换,但很多时候系统自带的TabBar不能满足我们的需求,系统自带的一些属性我们往往无法修改,像切换项的图片的大小,这时候就需要我们自定义TabBar.例如,我们想实现下方的TabBar的这个效果,使用系统的就无法完成. 演示所需图片下载地址http://download.csdn.net/detail/zsmile123/8136531 --------------

自定义tabbar(storyBoard)

开发中系统提供的tabbar很难满足我们的项目需求,因此我们需要自定义.下面提供了一种简单自定义tabbar. 1.storyBoard中拖拽几个页面 file:///Users/dingyunfei/Desktop/屏幕快照%202015-11-30%20下午10.45.08.png 2.创建CustomViewController类代码如下 // //  CustomViewController.h //  SB框架搭建 // //  Created by 丁云飞 on 15/11/26.