Отображать только аналогичные сравниваемые данные в табличном представлении - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть вопрос, который немного похож на мой предыдущий, но отличается.

Есть описание кода: у меня есть 2 Json массива, которые я пытаюсь сравнить в своем коде -> all и allUrl , Когда массив all содержит некоторый идентификатор из массива, строка таблицы изображений allUrl должна быть изменена на красный или наоборот на зеленый.

И мой новый вопрос: как я могу отображать только данные "red_icon" в таблице? Эти данные должны быть похожи для этих двух массивов.thanks


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as UITableViewCell

cell.textLabel?.text = all[indexPath.row].id
cell.detailTextLabel?.text = all[indexPath.row].timestampValue

let listOfStudentsUrl = allUrl.reduce(into: [String:String]()){$0[$1.id] =  $1.timestampValue}
           // Compare data

        listOfStudentsUrl.forEach{ key in print(key)    

        if  cell.textLabel?.text == key.key {
        cell.imageView!.image = UIImage(named:"red_icon")
        break
        }else{
        cell.imageView!.image = UIImage(named:"green_icon")
    }}
        return cell
    }

Исправить рабочий код после обсуждения ниже:


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as UITableViewCell



let listOfStudentsUrl = allUrl.reduce(into: [String:String]()){$0[$1.id] =  $1.timestampValue}
           // Compare data

        listOfStudentsUrl.forEach{ key in print(key)    

        if  all[indexPath.row].id == key.key {
        cell.textLabel?.text = all[indexPath.row].id
        cell.detailTextLabel?.text = all[indexPath.row].timestampValue
        cell.imageView!.image = UIImage(named:"red_icon")
        cell.isHidden = false
        break
        }else{
        cell.isHidden = true
    }}
        return cell
    }


  func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {

      var rowHeight:CGFloat = 0.0
    let listOfStudentsUrl = allUrl.reduce(into: [String:String]()){$0[$1.id] =  $1.timestampValue}

           for key in listOfStudentsUrl{
            if all[indexPath.row].id == key.key{
                rowHeight = 49.0
                break
            }else{
                rowHeight = 0.0
    }}
  return rowHeight
  }

1 Ответ

1 голос
/ 03 апреля 2020

Итак, вы пытаетесь скрыть некоторые указанные c ячейки вашего TableView. Один из способов сделать это - скрыть ячейку, а затем установить ее высоту на ноль.

Чтобы скрыть это, используйте свойство .isHidden. Чтобы изменить его высоту, переопределите функцию heightForRowAtIndexPath.

Подробнее об этом: Скрыть ячейку UITableview

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...