UITabBarController

2023-05-16

1 UITabBarController的常用属性和方法

一般来说,目前市面上的App很多都是由一个UITabBarController管理着4~5个UINavigationController,然后每个UINavigationController又管理着一组UIViewController对象或者其子类对象(如UITableViewController、UICollectionViewController等)。

在UITabBarController类中,有两个核心属性,分别为viewControllers和tabBar,其分别管理UITabBarController的子控制器以及底部菜单栏的样式。

// viewControllers:用于存储UITabBarController所需要管理的子控制器,通常这些子控制器是UINavigationController类的对象。
@property(nullable, nonatomic, copy) NSArray<__kindof UIViewController *> *viewController;
// tabBar:用于定制tabBar的整体外观样式,例如,背景颜色、背景图片等,需要注意的是:tabBar上每个按钮的样式定制并不由tabBar决定,这个与导航栏navigationBar是类似的。
@property(nonatomic, readonly) UITabBar *tabBar;
// selectedViewController:设置被选中的子控制器,被选中的子控制器会显示被选中的状态。
@property(nullable, nonatomic, assign) __kindof UIViewController (selectedViewController;
// selectedIndex:根据序号设置被选中的子控制器。
@property(nonatomic) NSUInteger selectedIndex;
3.UIViewController类中的tabBarItem与tabBarController
UITabBarController类中也对UIViewController类的属性进行了扩展,增加了tabBarItem这个关键属性,因此,每个子控制器的UITabBarItem样式,其实是在子控制器对象中进行设置的,这样保证了定制的灵活性。
另外,tabBarController属性使每个子控制器都可以获取到管理它的UITabBarController对象。
@interface UIViewController (UITabBarControllerItem)
@property(nullresettable, nonatomic, strong) UITabVarItem *tabBarItem;
@property(nullable, nonatomic, readonly, strong) UITabBarController *tabBarController;
@end

2 UITabBar的常用属性和方法

UITabBar类对象tabBar是UITabBarController中的一个属性,其负责定义底部功能栏的整体外观样式,但每个菜单按钮的样式并不是由UITabBar类对象控制的,而是有各个子控制器中的tabBarItem(UITabBarItem类)属性决定的。

// tintColor:tabBar整体渲染的颜色。
@property(null_resettable, nonatomic, strong) UIColor *tintColor;
// barTintColor:tabBar的整体背景颜色。
@property(nullable, nonatomic, strong) UIColor *barTintColor;
// backgroundImage:为tabBar设置背景图片。
@property(nullable, nonatomic, strong) UIColor *backgroundImage;
// barStyle:tabBar的整体风格样式,默认为白色的,可以改为黑色。
@property(nonatomic) UIBarStyle barStyle;
typedef NS_ENUM(NSInteger, UIBarStyle) {
    UIBarStyleDefault = 0,
    UIBarStyleBlack = 1,
}
// items:获取tabBar上面的所有UITabBarItem类的对象,即底部菜单栏上面的按钮,可以对其样式进行修改。
@property(nullable, nonatomic, copy) NSArray<UITabBarItem *> *items;

3 UITabBarItem的常用属性和方法

UITabBarItem是用于定义底部tabBar上每个按钮样式的类,UITabBarItem对象的设置是在各个子控制器中设置的,即UIViewController类中有一个UITabBarItem类的对象——tabBarItem。

在TabBar上每个按钮都是UITabBarItem类的对象,虽然其看上去是按钮,但UITabBarItem类并不是UIView的子类,而是NSObject的子类,因此,UIView的属性其都不具备。

// UITabBarItem类的实例化方法。该方法需要传递3个参数,分别为每个UITabBarItem的底部文字描述,中间的图片以及选中后显示的图片。需要注意的是,选中状态下文字的颜色需要设置tabBar的tintColor属性。
-(instancetype)initWithTitle:(nullable NSString *)title image:(nullable UIImage *)image selectedImage:(nullable UIImage *)selectedImage;
// badgeValue:每个UITabBarItem对象右上角的提示信息
@property(nullable, nonatomic, copy) NSString *badgeValue;
// badgeColor:iOS 10中新加入的属性,可以定制badge的颜色,默认为红色,也可以修改为其他颜色
@property(nonatomic, readwrite, copy, nullable) UIColor *badgeColor;

5 UITabBarController的代理协议

// 当切换子控制器时调用。可以用于切换控制器时准备界面数据
-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController;
// 设置子控制器能否被选中。
-(BOOL)taBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController;

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UITabBarController 的相关文章

  • 禁用选项卡栏项目 - Swift

    如何禁用特定选项卡栏项目 就像第三个图标一样 self tabBarItem items 2 enabled false 一定有一种方法可以完成像单行这样简单的任务吗 上面的不行 这是答案 if let arrayOfTabBarItems
  • 使用故事板从 appdelegate 访问视图控制器

    我已经遵循了 Ray Wendelich 教程RayWenderlich 教程 Tabbarcontroller 使用故事板 http www raywenderlich com 50308 storyboards tutorial in
  • 如何在 swift ios 中刷新选项卡栏项目

    我做的应用程序就像Instagram与选项卡栏项目 在应用程序中我有simple user and company user 我有主视图控制器 MainTabBarController UITabBarController 有 5 个选项卡
  • tableView didSelectRowAtIndexPath 在 iOS 7 上无法正常工作。为什么?

    首先我想说我只是提出这个问题 因为我想了解发生了什么 我在 Xcode5 上全新安装时打开了一个旧的 Xcode 项目 一个非常简单的项目 当我意识到它在 iOS 7 上不起作用时 为什么 不知道 我看到了一些其他问题 没有得到任何有用的答
  • 创建自定义标签栏控制器的最佳方法是什么?

    我正在开发的应用程序更有可能是tabBarController应用 但我不能使用tabBarController因为我需要定制tab底部的处理程序我还需要项目之间的自定义空间 所以我正在创建自定义tabBarController 我想知道最
  • iOS 启动故事板:如何更改选项卡栏的色调颜色?

    我在做什么 使用 启动故事板 它非常简单 并且包含一个默认的 UITabBarController 我已在启动情节提要以及我的应用程序中将选项卡栏的 tintColor 设置为红色 我使用的是 Xcode 7 iOS 9 什么不起作用 启动
  • Swift:按下 UITabBarItem 时如何执行操作

    目前我有一个连接到表格视图控制器的选项卡栏控制器 当我按下标签栏项目时 我试图转到表格视图的顶部 我知道如何到达桌面视图的顶部 我只是不知道按下该项目时如何执行操作 你应该使用UITabBarDelegate用方法didSelectItem
  • 通话中状态栏如何影响 ViewController 视图大小?

    我试图理解如何view关联到一个UITabBarController UINavigationController or UIViewController当通话状态栏切换时做出反应 我的问题是它们的行为似乎不同 这会给我带来副作用 我制作了
  • didSelectViewController 方法没有被调用(带有故事板)

    我有 2 个版本的选项卡式 ios5 应用程序 一个使用情节提要创建 一个使用 xib 文件创建 故事板版本不调用UITabBarControllerDelegate method didSelectViewController xib 版
  • iOS:跨viewControllers在导航栏下方添加视图

    我有一个这样的项目 但我试图弄清楚如何在整个导航栏的导航栏下方添加横幅 以便在需要时可以将其隐藏 你们中有人知道我该怎么做吗 在主视图控制器中实现协议UINavigationControllerDelegate并在选择器中navigatio
  • 用动画同时隐藏导航栏和选项卡栏

    Edit 我将赏金授予了约翰 因为他在回答中付出了很多努力 并且无论如何都会得到它 但仍然没有可行的解决方案 我仍在寻找答案 如果有人知道如何做到这一点 我将不胜感激 我想在我的应用程序中添加一个 最大化 按钮来隐藏导航和标签栏 导航栏和选
  • 配置具有超过 16 个项目的 UITabBar

    My UITabBarController包含超过 16 个视图控制器 当我进入 更多 选项卡时 我可以看到所有UITabBarItems 如果我单击 编辑 按钮 我可以看到前 16 个图标 但没有足够的空间来显示更多图标 因此从第 17
  • iOS 自定义标签栏

    我刚刚开始 iOS 开发 只是在玩 atm 我正在尝试将默认的选项卡栏按钮转换为更自定义的按钮 经过一番查看后 我发现您可以为每个按钮创建自定义状态 所以我这样做了 UIImage selectedImage0 UIImage imageN
  • 如何从 CustomViewController 中更改 RootViewController(在 AppDelegate 中)?

    再会 我的应用程序具有在 AppDelegate 中加载的授权表单 SigninController 登录后 在 SigninController m 中检查 应该出现 TabBarController 作为应用程序的主视图 如何将控制器从
  • 如何在 Swift 编程中获得基于导航的模板功能

    我的项目需要一个导航控制器 并且我的应用程序最初有一个社交登录 一旦验证通过 用户将被推送到另一个视图 我在其中显示一个具有 2 个选项卡的选项卡控制器 我不知道如何在 Swift 编程中做到这一点 我已将视图控制器嵌入到导航控制器中 一旦
  • 禁用一个 UITabbar 项目的旋转

    我有一个 uitabbarcontroller 有 4 个选项卡栏项目 每个选项卡栏项目都有一个 uinavigationcontroller 我需要将一个 uitabbar 项目的方向锁定为仅纵向 所以我实现了以下代码 创建一个自定义标签
  • 添加 UITabBarController 时出错

    我在用着单点触控C 编写具有多个不同屏幕的 iPhone 应用程序 为了简单起见 我将仅描述导致我遇到问题的控制器的几个屏幕 我遇到的问题是 当我创建一个继承自的类时 我收到此错误消息UITabBar控制器 应用程序窗口应该有一个根视图控制
  • 标签栏不显示图标?

    我读了一堆相关的问题 我尝试了他们所说的 但没有任何效果 不知道为什么 所以 我有3个不同的UIStoryboards 第一个是处理登录 注册的 Auth Storyboard 并且有一个对第二个 Storyboard 选项卡栏 Story
  • UIToolBar 位于 UITabBar 之上?

    在 照片 应用程序的 相机胶卷 部分中 您可以单击右上角的按钮来编辑照片 这将底部选项卡栏替换为 UIToolBar 中的三个新按钮 我想做类似的事情 但我无法让我的 UIToolBar 位于选项卡栏的顶部 有没有办法指定图层顺序 或者我需
  • iPhone Dev:从子控制器和 TabBar 中的另一个控制器重新加载表视图的数据

    我正在实现一个笔记管理器应用程序 它在 tabBar 中有一个 tableView 其中显示其笔记的主要信息 访问一个注释时 您可以编辑其属性 在 tabBar 的一个按钮中 您可以选择注释在 tableView 中的显示方式 我遇到的问题

随机推荐

  • 【Python】用pyecharts绘制我国人口分布和迁移地图

    一直很好奇我国人口分布和迁移情况 xff0c 所以想用Python分析一下 由于我国省份较多 xff0c 把数据放在地图上展示会更加清晰 xff0c 故本文用Python中的pyecharts库进行人口分布和迁移绘图展示 pyecharts
  • 模型评价指标—ROC曲线

    对于分类模型 xff0c 在建立好模型后 xff0c 我们想对模型进行评价 xff0c 常见的指标有混淆矩阵 F1值 KS曲线 ROC曲线 AUC面积等 也可以自己定义函数 xff0c 把模型结果分割成n 100 份 xff0c 计算top
  • 模型评价指标—F1值

    最近空余时间在参加数字中国创新大赛 xff0c 比赛规则是根据模型的F1值对参赛者进行排名 为了更深刻地理解这个指标 xff0c 我最近对它做了一些梳理 xff0c 现在把它分享给更多有需要的人图片 最近在参赛时也发现了一个问题 xff0c
  • 【Python常用函数】一文让你彻底掌握Python中的pivot_table函数

    任何事情都是由量变到质变的过程 xff0c 学习Python也不例外 只有把一个语言中的常用函数了如指掌了 xff0c 才能在处理问题的过程中得心应手 xff0c 快速地找到最优方案 本文和你一起来探索Python中的pivot table
  • python画生肖兔

    2022已经过去 xff0c 2023正在继续 xff0c 希望我们都能在平凡的日子里 xff0c 熠熠生辉 本文介绍运用Python中的turtle库控制函数画生肖兔 xff0c 并设置了2023年幸运词 xff0c 快截屏看看你的幸运词
  • 判断变量是否存在

    来获取一个变量是否存在 xff0c 用 if typeof a 61 34 undefined 34 alert 34 ok 34 xff0c xff0c 而不要去使用 if a 因为如果 a 不存在 xff08 未声明 xff09 则会出
  • Nextcloud 内部服务器错误解决

    在部署nextcloud过程中最后登录页面时出现内部服务器错误 xff0c 心态当时就炸了 在网上找了各种方案 xff0c 但是大部分博主都告诉我是 var lib php session 属组的权限问题 xff0c 或者web目录的权限不
  • golang中的(data race )典型数据竞争问题举例

    示例一 func main var wg sync WaitGroup wg Add 5 for i 61 0 i lt 5 i 43 43 go func fmt Println i Not the 39 i 39 you are loo
  • Jupyter Notebook怎么全选输出的内容?

    Ctrl 43 A 单击 双击 三连击 三连击 xff01 xff01 xff01
  • RetinaNet详细解读

    网络名称RetinaNet发表时间2018年1月作者Tsung Yi Lin Priya Goyal Ross Girshick Kaiming He and Piotr Dollar机构Facebook AI Research FAIR
  • 微信公众号服务器token验证失败?

    很可能是你用了官方的python范例 xff0c 官方的范例是python2的 xff0c 而我用的是python3的 将 map sha1 update list 修改为sha1 61 hashlib sha1 34 34 join li
  • 三分钟学会lightGBM安装及入门指南(一)

    果然标题大法好啊 xff0c 还是成功的让你进来了吧 xff0c xff0c 但是以下都是干货 我的机器环境python3 6 xff0c win7操作系统 xff0c 当然win10也是同样适用的 xff0c 有不懂的可以留言 xff0c
  • 微信小程序文字水平垂直居中对齐问题(完美解决方案)

    我们知道常用的居中对齐方式有很多种例如 xff1a text align center align items center justify content center margin auto 子容器在父容器中居中 但是在view中的文字
  • mac下python matplotlib中文乱码解决方案(亲测可用)!!

    在网上找了一大堆方法 xff0c 花了很久 xff0c 发现不是要安装各种字体就是要改配置 xff0c 而且字体真的不好找也不好安装 就例如下面这两种办法 xff0c mac下根本不管用 xff0c 别人管不管用我不知道 xff0c 反正我
  • python使用threading.Timer实现线程循环任务定时器(一)

    在进行爬虫系统开发的过程中遇到需要间隔一段时间就重复执行的任务的需求 xff0c 就想实现一个线程服务在后台监控数据的抓取状态 xff0c 要想实现定时循环任务的脚本可以使用linux下的crontab命令来执行 xff0c 但是在一个常驻
  • cross_val_score的 scoring参数值解析

    一般我们在模型训练过程中 xff0c 会采用K折交叉验证的方法来验证模型的表现 xff0c 从而进行调参 xff0c 一般我们会用到 sklearn model selection 的 cross val score 方法来计算模型的得分
  • windows 10下 itunes 备份默认存储路径问题

    最近在研究iphone手机备份的问题 xff0c 在使用itunes给手机备份的时候 xff0c 发现C盘空间不够用了 xff0c 于是想把itunes的默认存储路径修改一下 xff0c 在网上查找资料了解了相关操作教程后 xff0c 发现
  • MAC查看与修改系统默认的shell

    查看系统当前默认使用的shell有如下几个方法 一 查看所有的shell cat etc shells 输出 List of acceptable shells for chpass 1 Ftpd will not allow users
  • windows下redis的配置文件(redis.windows.conf)

    redis的配置 Redis默认不是以守护进程的方式运行 xff0c 可以通过该配置项修改 xff0c 使用yes启用守护进程 daemonize yes 当Redis以守护进程方式运行时 xff0c Redis默认会把pid写入redis
  • UITabBarController

    1 UITabBarController的常用属性和方法 一般来说 xff0c 目前市面上的App很多都是由一个UITabBarController管理着4 xff5e 5个UINavigationController xff0c 然后每个