简体   繁体   中英

Cell label Does not catching value in table view

I have two arrays of number which i'm trying to match and then want to change background of cell label in cellForRowAtIndexPath delegate in TableView . But it is not catching my condition even when the condition meets correctly. This is my code:

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
}

Now when it meets the condition, if phone == number.phone It does not change color for the cell label

I believe the problem is that you are looping through the entire array every time you get a request for a cell. What you probably want to do is get the number for the indexPath.row and loop through the onlineUserArray to find the status.

Something like this (I don't know your exact data structure, but this should be along the right lines):

    // 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
        }
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM