問題描述:
(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