给tabbaritem的badgeValue设置角标,没有效果,为什么

给tabbaritem的badgeValue设置角标,没有效果,为什么,第1张

把它分成几个小步骤、 第一步上设置一个断点并遍历代码检查,看看是否你的期望发生在每一行上。

UIViewController *rootController = self.window.rootViewController

UITabBarController *tabController = rootController.tabBarController

UIViewController *requiredViewController = [tabController.viewControllers objectAtIndex:1]

UITabBarItem *item = requiredViewController.tabBarItem

[item setBadgeValue:@"1"]

我怀疑您的属性之一是 nil -这通常是 '为什么我的方法失败没有任何警告或错误' 类型 bug 的原因。

应该要自定义一个View ,再加个label吧 !

你的采纳是我前进的动力,

记得好评和采纳,答题不易,互相帮助,

手机提问的朋友在客户端右上角评价点(满意)即可.

如果你认可我的回答,请及时点击(采纳为满意回答)按钮!!

在开发应用时,我们接收消息,往往会看到 App 有通知时就会在应用图标上显示未读消息+1.如何实现呢?其实非常简单,就几行代码

这个是设置应用图标上显示未读消息+1

// 设置提醒数字(App的未读数) NSString *status = [NSString stringWithFormat:@"%d", count]if ([status isEqualToString:@"0"]) { // 如果是0,得清空数字 self.tabBarItem.badgeValue = nil<br>//应用图标显示 [UIApplication sharedApplication].applicationIconBadgeNumber = 0} else { // 非0情况 self.tabBarItem.badgeValue = status[UIApplication sharedApplication].applicationIconBadgeNumber = status.intValue}

但是这个是实时改变的,那么我们就需要一个定时器来给他循环引用

- (void)viewDidLoad{ [super viewDidLoad]//多长时间来走一次下面的方法 CGFloat dur = 10// 获得未读数 NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval: dur target:self selector:@selector(调用的方法) userInfo:nil repeats:YES]// 主线程也会抽时间处理一下timer(不管主线程是否正在其他事件) [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes]}

这样就可以,但是还有问题,要是我们的 App 后台以后,他是不是就停止了,所以,我们还要再 APPDelegate中设置一下后台代理

- (void)applicationDidEnterBackground:(UIApplication *)application{// 向 *** 作系统申请后台运行的资格,能维持多久,是不确定的UIBackgroundTaskIdentifier task = [application beginBackgroundTaskWithExpirationHandler:^{// 当申请的后台运行时间已经结束(过期),就会调用这个block// 赶紧结束任务[application endBackgroundTask:task]}]}

这样就可以,不是的这样还是不够完善,我们应该还要在 info.plist 中添加一句话才行

进入Info.plst中设置后台模式:添加 "Required background modes" 选择 ->App plays audio or streams audio/video using AirPlay

我们这只是来把我们的 APP 伪装成音乐或视频播放器,但是苹果很吊的,你就算是这样,他照样会检测你是不是在播放音频,如果不是,内存爆了也是会杀死的,所以呢,我们有一个方法:

找一个 0kb 的 MP3 格式的文件(没声音的)

在- (void)applicationDidEnterBackground:(UIApplication *)application 代理中循环播放就 OK了!

补充知识点:

以前的后台模式只有3种 保持网络连接 多媒体应用 VOIP:网络电话 app的状态 1.死亡状态:没有打开app 2.前台运行状态 3.后台暂停状态:停止一切动画、定时器、多媒体、联网 *** 作,很难再作其他 *** 作 4.后台运行状态


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7862885.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存