概述
问题描述:
(1)进入首页后,登录状态下的账户tabbar上会展示小红点儿
(2)进入账户页后,消息图标上也有小红点儿
(3)情况一:只要有未读消息就展示红点
(4)情况二:只要点击进入消息页面,则返回后红点儿消失(尽管还有未读消息)
1.只要有未读消息就展示红点
(1)首页接口增加是否有未读消息字段:isRead_Home
let item = self.tabBarController?.tabBar.items?[2]
if isRead_Home == "1"{//有未读消息
item?.image = UIImage(named:"账户红点.png")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
}else{//未读消息
item?.image = UIImage(named:"账户无红点.png")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
}
(2)账户接口增加是否有未读消息字段:isRead_Mine
let item = self.tabBarController?.tabBar.items?[2]
if isRead_Mine == "1"{//有未读消息
self.redImg?.isHidden = false //红点图标img
}else{//未读消息
item?.image = UIImage(named:"账户无红点.png")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
}
2.只要点击进入消息页面,则返回后红点儿消失(尽管还有未读消息)
(1)首页接口增加最新消息:logId + 是否有未读消息字段:isRead_Home,且本地保存logId_Local,初始值为0
账户红点的展示与否:
let logId_Local = UserDefaults.standard.integer(forKey: logId_Key)
let item = self.tabBarController?.tabBar.items?[2]
if logId_Local == 0 && isRead_Home == "0"{//有未读消息
item?.image = UIImage(named:"账户红点.png")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
}else if logId_Local == logId{//无未读消息
item?.image = UIImage(named:"账户无红点.png")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
}else{//有未读消息
item?.image = UIImage(named:"账户红点.png")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
}
(2)账户也增加跟首页同样的字段,且在点击消息页面后,将logId_Local重新赋值
let logId_Local = UserDefaults.standard.integer(forKey: logId_Key)
let item = self.tabBarController?.tabBar.items?[2]
if logId_Local == 0 && isRead_Mine == "0"{//有未读消息
self.redImg?.isHidden = false
}else if logId_Local == self.logId {//无未读消息
self.redImg?.isHidden = true
item?.image = UIImage(named:"账户点击前.png")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
}else{//有未读消息
self.redImg?.isHidden = false
}
点击消息按钮:
func enterMessage(){//消息
//更新本地存储状态:
UserDefaults.standard.setValue(logId, forKey: logId_Key)
UserDefaults.standard.synchronize()
//跳转消息界面:
let vc = MessageViewController();
vc.hidesBottomBarWhenPushed = true;
self.navigationController?.pushViewController(vc, animated: true)
}
3.技术说明:
(1)tabbar上的红点儿展示:
**获取账户tabbar
let item = self.tabBarController?.tabBar.items?[2]
**切换图片
item?.image = UIImage(named:"账户红点.png")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
item?.image = UIImage(named:"账户无红点儿.png")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
**系统自带:
item?.badgeValue = "2"//显示消息条数为 2
(2)userDefaults保存“logId
a:key值的定义需添加手机号,用以区分用户:let logId_Key = "logId_Local" + self.teleNum
b:为了永久保存,故退出登录时不移除logId_Key
最后
以上就是失眠八宝粥为你收集整理的iOS-未读消息的小红点展示的全部内容,希望文章能够帮你解决iOS-未读消息的小红点展示所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复