服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - IOS - iOS开发中UITabBarController的使用示例

iOS开发中UITabBarController的使用示例

2020-12-24 15:22TommyYaphetS IOS

这篇文章主要介绍了iOS开发中UITabBarController的使用示例,代码基于Objective-C进行演示,需要的朋友可以参考下

首先我们看一下它的view层级图:
iOS开发中UITabBarController的使用示例

复制代码 代码如下:

- (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]; 
  
#pragma mark - 设置tabbaritem 
#pragma mark  第一个视图viewcontroller 
     
    hmt_aviewcontroller * tabbarviewa = [[hmt_aviewcontroller alloc] init]; 
    // 设置a视图下----标签栏标题文字(可参照微信或者qq体会) 
    tabbarviewa.tabbaritem.title = @"微信"; 
    // 设置a视图下----标签栏图片(因为自己没有图片,在这里随便设置了个名字) 
    //tabbarviewa.tabbaritem.image = [uiimage imagenamed:@"1.png"]; 
    // 设置a视图下----标签栏信息提示(住:badgevalue是nsstring类型 如下设置了3,就像qq消息有3条未接受一样,给人一种提醒) 
    tabbarviewa.tabbaritem.badgevalue = @"3"; 
    // ios7弃用了----标签栏选中的时候显示一张图片,没选中的时候显示另一张图片 
    //[tabbarviewa.tabbaritem setfinishedselectedimage:actionmenu.selectedicon withfinishedunselectedimage:actionmenu.icon]; 
    // ios7的方法(自己没有图片,所以代码里面的图片都是一个随便取的名字,没有实用意义) 
    //tabbarviewa.tabbaritem.selectedimage = actionmenu.selectedicon; 
     
#pragma mark  第二个视图viewcontroller 
    // 第二个视图viewcontroller 
    hmt_bviewcontroller * tabbarviewb = [[hmt_bviewcontroller alloc] init]; 
    // 设置b视图下----标签栏 
    // 用系统提供的标识(可以算等价于图标和文字)进行设置(参数:uitabbarsystemitem是个枚举值,想要什么形式,就去系统提供的api中找) 
    tabbarviewb.tabbaritem = [[uitabbaritem alloc]initwithtabbarsystemitem:uitabbarsystemitemsearch tag:1]; 
    // 设置b视图下----标签栏信息提示 
    tabbarviewb.tabbaritem.badgevalue = @"go"; 
     
#pragma mark  第三个视图viewcontroller 
    hmt_cviewcontroller * tabbarviewc = [[hmt_cviewcontroller alloc] init]; 
    tabbarviewc.tabbaritem = [[uitabbaritem alloc]initwithtabbarsystemitem:uitabbarsystemitemdownloads tag:2]; 
    // 设置b视图下----标签栏信息提示 
    tabbarviewc.tabbaritem.badgevalue = @"new"; 
     
#pragma mark  第四个视图viewcontroller 
    hmt_dviewcontroller * tabbarviewd = [[hmt_dviewcontroller alloc] init]; 
    tabbarviewd.tabbaritem = [[uitabbaritem alloc]initwithtabbarsystemitem:uitabbarsystemitemfavorites tag:3]; 
    // 设置b视图下----标签栏信息提示 
    tabbarviewd.tabbaritem.badgevalue = @"99"; 
     
#pragma mark  第五个视图viewcontroller 
    hmt_eviewcontroller * tabbarviewe = [[hmt_eviewcontroller alloc] init]; 
    tabbarviewe.tabbaritem = [[uitabbaritem alloc]initwithtabbarsystemitem:uitabbarsystemitemhistory tag:4]; 
    // 设置b视图下----标签栏信息提示 
    tabbarviewe.tabbaritem.badgevalue = @"sky"; 
     
#pragma mark  第六个视图viewcontroller(系统默认能显示的最大视图个数是5个) 
    /* 如果你的viewcontrollers属性添加了多于五个的items,那tab bar controller将会自动插入一个特殊的view controller,
    称为 more view controller,该 controller 将会负责管理多于的items,这个more view controller提供一个自定义的界面,
    用table的方式呈现多余的view controller,并且view controller的数量是不限制的*/ 
    hmt_fviewcontroller * tabbarviewf = [[hmt_fviewcontroller alloc] init]; 
    tabbarviewf.tabbaritem = [[uitabbaritem alloc]initwithtabbarsystemitem:uitabbarsystemitemcontacts tag:5]; 
    // 设置f视图下----标签栏信息提示 
    tabbarviewf.tabbaritem.badgevalue = @"ag"; 
     
     
     
#pragma mark - 设置tabbarcontroller 
     
    // 创建tabbarcontroller 
    uitabbarcontroller * tabbarcontroller = [[uitabbarcontroller alloc]init]; 
    // tabbarcontroller默认是放在最底部的,如果你想调整位置,可以进行下面2部操作(44是iphone中tabbarcontroller和uinavigationcontroller标准高度) 
    //cgrect frame = cgrectmake(0, 20, 320, 44); 
    //tabbarcontroller.tabbar.frame = frame; 
    // 每一个tab都必须有一个content view controller------->viewcontrollers属性,用来存入一个应用的tabbarcontroller有多少个界面切换 
    tabbarcontroller.viewcontrollers = [nsarray arraywithobjects:tabbarviewa,tabbarviewb,tabbarviewc,tabbarviewd,tabbarviewe,tabbarviewf, nil nil]; 
    // 设置着色 
    tabbarcontroller.tabbar.tintcolor = [uicolor greencolor]; 
    // 设置选中图片时候 
    tabbarcontroller.tabbar.selectedimagetintcolor = [uicolor browncolor]; 
    // 设置背景图片(自己没有图片,不进行设置) 
    //tabbarcontroller.tabbar.backgroundimage = [uiimage imagenamed:@"@@@@@"]; 
    // 设置程序启动时默认的viewcontroller视图(设置为3,一共5个viewcontroller,进来时候显示的视图就是第4个-tabbarviewd,下标从0开始) 
    tabbarcontroller.selectedindex = 3; 
     
     
    self.window.rootviewcontroller = tabbarcontroller; 
     
    [self.window makekeyandvisible]; 
    return yes; 

 

最后效果如下图:

iOS开发中UITabBarController的使用示例

uitabbarcontroller的代理方法以及模态显示
首先要实现协议<uitabbarcontrollerdelegate>

复制代码 代码如下:

    // 设置代理
    tabbarcontroller.delegate =self; 
    //uinavigationcontroller *nav = tabbarcontroller.morenavigationcontroller;
    //[nav setnavigationbarhidden:yes animated:yes];

 

// 控制哪些viewcontroller的标签栏能被点击
- (bool)tabbarcontroller:(uitabbarcontroller *)tabbarcontrollershouldselectviewcontroller:(uiviewcontroller *)viewcontroller{
    // 代表hmt_cviewcontroller这个view无法显示,无法点击到它代表的标签栏
    if ([viewcontrolleriskindofclass:[hmt_cviewcontrollerclass]]) {
        returnno;
    }
    returnyes;
}

// 选中哪个标签栏,一个监控作用吧
- (void)tabbarcontroller:(uitabbarcontroller *)tabbarcontrollerdidselectviewcontroller:(uiviewcontroller *)viewcontroller{

}

// more view controller将要开始编辑
- (void)tabbarcontroller:(uitabbarcontroller *)tabbarcontrollerwillbegincustomizingviewcontrollers:(nsarray *)viewcontrollers{

}
// more view controller将要结束编辑
- (void)tabbarcontroller:(uitabbarcontroller *)tabbarcontrollerwillendcustomizingviewcontrollers:(nsarray *)viewcontrollers changed:(bool)changed{

}
// more view controller编辑
- (void)tabbarcontroller:(uitabbarcontroller *)tabbarcontrollerdidendcustomizingviewcontrollers:(nsarray *)viewcontrollers changed:(bool)changed{

}

#import "hmt-aviewcontroller.h"
#import "hmtmodalshowviewcontroller.h"

@interfacehmt_aviewcontroller ()
@end

@implementation hmt_aviewcontroller

- (void)viewdidload
{
    [superviewdidload];
    self.view.backgroundcolor = [uicolorredcolor];
   
    // 创建一个按钮
    uibutton * button = [uibutton buttonwithtype:uibuttontypedetaildisclosure];
    button.frame =cgrectmake(100,100,100, 100);
    [button addtarget:self action:@selector(modalshow)forcontrolevents:uicontroleventtouchupinside];
    [self.view addsubview:button];
// do any additional setup after loading the view.
}

- (void)modalshow{
   
    hmtmodalshowviewcontroller * modalshowvc = [[hmtmodalshowviewcontroller alloc]init];

    //模态视图控制器呈现出来时候的视觉效果
    modalshowvc.modaltransitionstyle =uimodaltransitionstylecrossdissolve;
    /*
     uimodaltransitionstylecoververtical = 0,   //默认,由下往上
     uimodaltransitionstylefliphorizontal,      //水平转动效果
     uimodaltransitionstylecrossdissolve,       //渐变效果
     uimodaltransitionstylepartialcurl,         //书页往上翻动效果
     */
    //模态视图控制器呈现方式,默认全屏
    modalshowvc.modalpresentationstyle =uimodalpresentationfullscreen;
    /*   
     uimodalpresentationfullscreen = 0,
     uimodalpresentationpagesheet,
     uimodalpresentationformsheet,
     uimodalpresentationcurrentcontext,
     uimodalpresentationcustom,
     uimodalpresentationnone = -1,   
     */
   
    uinavigationcontroller * modalshownc = [[uinavigationcontroller alloc] initwithrootviewcontroller:modalshowvc];
   
    //推出模态视图控制器
    [self presentviewcontroller:modalshownc animated:yes completion:^{
        nslog(@"hello world");      
    }];
}


#import "hmtmodalshowviewcontroller.h"

@interfacehmtmodalshowviewcontroller ()

@end

@implementation hmtmodalshowviewcontroller

- (void)viewdidload
{
    [superviewdidload];
// do any additional setup after loading the view.
   
    self.view.backgroundcolor = [uicolor yellowcolor];
   
    // 利用uinavigationcontroller来实现退出控制器
    uibarbuttonitem * barbutton = [[uibarbuttonitem alloc] initwithbarbuttonsystemitem:uibarbuttonsystemitemadd target:self action:@selector(modaldismiss)];
   
    self.navigationitem.leftbarbuttonitem = barbutton;
    self.navigationitem.title ";
   
    //创建一个按钮来实现退出控制器
/*    uibutton * button = [uibutton buttonwithtype:uibuttontypedetaildisclosure];
    button.frame = cgrectmake(100, 100, 100, 100);
    [button addtarget:self action:@selector(modaldismiss) forcontrolevents:uicontroleventtouchupinside];
   
    [self.view addsubview:button];*/
   
}

- (void)modaldismiss{
   //退出模态视图控制器
    [self dismissviewcontrolleranimated:yes completion:^{
        nslog(@"退出goodbye");
    }];
}
@end

 

延伸 · 阅读

精彩推荐
  • IOSiOS APP实现微信H5支付示例总结

    iOS APP实现微信H5支付示例总结

    这篇文章主要介绍了iOS APP实现微信H5支付示例总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下...

    一张小A11332021-06-01
  • IOSiOS中时间与时间戳的相互转化实例代码

    iOS中时间与时间戳的相互转化实例代码

    这篇文章主要介绍了iOS中时间与时间戳的相互转化实例代码,非常具有实用价值,需要的朋友可以参考下。...

    张无忌!4812021-03-09
  • IOSxcode8提交ipa失败无法构建版本问题的解决方案

    xcode8提交ipa失败无法构建版本问题的解决方案

    xcode升级到xcode8后发现构建不了新的版本。怎么解决呢?下面小编给大家带来了xcode8提交ipa失败无法构建版本问题的解决方案,非常不错,一起看看吧...

    Cinna丶7542021-02-03
  • IOSiOS10 Xcode8适配7个常见问题汇总

    iOS10 Xcode8适配7个常见问题汇总

    这篇文章主要为大家详细汇总了iOS10 Xcode8适配7个常见问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    索马里猫10332021-02-01
  • IOSiOS常见的几个修饰词深入讲解

    iOS常见的几个修饰词深入讲解

    这篇文章主要给大家介绍了关于iOS常见的几个修饰词的相关资料,iOS修饰词包括assign、weak、strong、retain、copy、nonatomic、atomic、readonly、readwrite,文中通过示...

    郡王丶千夜7422021-05-10
  • IOSIOS网络请求之AFNetWorking 3.x 使用详情

    IOS网络请求之AFNetWorking 3.x 使用详情

    本篇文章主要介绍了IOS网络请求之AFNetWorking 3.x 使用详情,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    总李写代码6892021-03-04
  • IOSiOS逆向教程之logify跟踪方法的调用

    iOS逆向教程之logify跟踪方法的调用

    这篇文章主要给大家介绍了关于iOS逆向教程之logify跟踪方法调用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学...

    Mr.Guo11472021-04-28
  • IOS谈一谈iOS单例模式

    谈一谈iOS单例模式

    这篇文章主要和大家谈一谈iOS中的单例模式,单例模式是一种常用的软件设计模式,想要深入了解iOS单例模式的朋友可以参考一下...

    彭盛凇11872021-01-19