我有两个数字数组,我试图匹配它们,然后想要更改 TableView
中 cellForRowAtIndexPath 委托(delegate)中单元格标签的背景。但即使条件正确满足,它也没有捕捉到我的条件。这是我的代码:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if dataLoded {
if isGroupListView {
if localGroupChannelsArr.count > 0 {
noDataFoundView.isHidden = true
}else {
noDataFoundView.isHidden = false
}
return localGroupChannelsArr.count
}
if localSingleChannelsArr.count > 0 {
noDataFoundView.isHidden = true
}else {
noDataFoundView.isHidden = false
}
return localSingleChannelsArr.count
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
var cell = ChatRoomCellView()
var channelRoom = ChatRoom()
// var onlineStatus = OnlineUser()
if isGroupListView {
channelRoom = localGroupChannelsArr[indexPath.row]
cell = groupChatRoomsList.dequeueReusableCell(withIdentifier: "GroupRoomCellView") as! ChatRoomCellView
}else {
channelRoom = localSingleChannelsArr[indexPath.row]
cell = singleChatRoomsList.dequeueReusableCell(withIdentifier: "SingleRoomCellView") as! ChatRoomCellView
for (phone, number) in zip(numbers, onlineUserArray) {
print(phone)
print(phone,number.phone!)
if phone == number.phone
{
if number.status == "online"
{
print("Matched")
cell.onlineStatusLbl.backgroundColor = #colorLiteral(red: 0.08950354904, green: 0.807744801, blue: 0.07534810156, alpha: 1)
}
else if number.status == "offline"
{
cell.onlineStatusLbl.backgroundColor = #colorLiteral(red: 0.6666666865, green: 0.6666666865, blue: 0.6666666865, alpha: 1)
}
else
{
cell.onlineStatusLbl.backgroundColor = UIColor.clear
}
}
}
}
cell.selectionStyle = .none
cell.delegate = self
cell.myIndexPath = indexPath
cell.chatRoomObj = channelRoom
cell.onlineUser = onlineUserArray
cell.configCell()
return cell
}
现在,当满足条件时,if phone == number.phone
它不会改变单元格标签的颜色
最佳答案
我认为问题在于,每次收到单元格请求时,您都会循环遍历整个数组。您可能想要做的是获取 indexPath.row
的 number
并循环遍历 onlineUserArray
以查找状态。
类似这样的东西(我不知道你的确切数据结构,但这应该是正确的):
// inside cellForRowAt
cell = singleChatRoomsList.dequeueReusableCell(withIdentifier: "SingleRoomCellView") as! ChatRoomCellView
// just to make it easy to see what's going on in the debug console
print(indexPath)
let phone = numbers[indexPath.row]
for number in onlineUserArray
{
print(number)
if number.phone == phone
{
if number.status == 1
{
print("Matched")
cell.theLabel.backgroundColor = #colorLiteral(red: 0.08950354904, green: 0.807744801, blue: 0.07534810156, alpha: 1)
}
else if number.status == 0
{
cell.theLabel.backgroundColor = #colorLiteral(red: 0.6666666865, green: 0.6666666865, blue: 0.6666666865, alpha: 1)
}
else
{
cell.theLabel.backgroundColor = UIColor.clear
}
print("found a match, so break out of the loop")
break
}
}
关于ios - 单元格标签无法捕获表格 View 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54889253/