У меня есть массив целых чисел, и я пытаюсь установить для 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, но безрезультатно.