Установка heightForRowAt indexPath для нескольких строк в 0 - PullRequest
0 голосов
/ 08 июня 2018

У меня есть массив целых чисел, и я пытаюсь установить для UITableViewCell высоту 50 для всех строк в массиве, а для остальных строк - 0. Используя Swift 3, мой массив возвращает [0,1,3,6], и я перебираю всеэлементы в массиве, используя цикл for.

В моей функции heightForRowAt indexPath я сравниваю indexPath.row с этими значениями и соответствующим образом устанавливаю высоту.Однако он будет работать только для первого элемента, а не для всех.

Просто введите код:

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    if isSearching == true{
        searchBarIndexs.sorted(by: {$0 < $1})
        for allvalues in searchBarIndexs{
            if indexPath.row == allvalues{
                return 52
            } else {
                return 0
            }
        }
    } else {
        return 52
    }
    return 52
}

  override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        if isSearching{
            return searchBarIndexs.count
        } else {
            return usernames.count
        }

    }




override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! usersProfileTableViewCell
            cell.userUsernameLabel.text = usernames[indexPath.row]
            cell.userIdLabel.text = userIDs[indexPath.row]

            self.allimages[indexPath.row].getDataInBackground { (data,error) in
                if let imageData = data {
                    if let downloadedImage = UIImage(data: imageData){
                        cell.profileImage.image = downloadedImage

                    }
                }
            }

        return cell
    }

Какая логика мне не хватает, чтобы высота была установлена ​​соответствующим образом для всех элементовв массиве, а не только в первом?Я пробовал другие подходы, используя indexPath.contains, но безрезультатно.

1 Ответ

0 голосов
/ 08 июня 2018

Не зацикливаться.Просто проверьте текущий indexPath.

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    if isSearching {
        return searchBarIndexs.contains(indexPath.row) ? 52 : 0
    } else {
        return 52
    }
}
...