将多行的 heightForRowAt indexPath 设置为 0

Setting heightForRowAt indexPath for multiple rows to 0

我有一个整数数组,我正在尝试将数组中所有行的 UITableViewCell 高度设置为 50,并将其余行设置为 0。 使用 Swift 3,我的数组 returns [0,1,3,6] 并且我正在使用 for 循环遍历数组中的所有元素。

在我的 heightForRowAt indexPath 函数中,我将 indexPath.row 与这些值进行比较并适当地设置高度。但是,它只适用于第一个元素,而不适用于所有元素。

简单的输入代码:

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    if isSearching == true{
        searchBarIndexs.sorted(by: {[=10=] < })
        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 的其他方法,但无济于事。

不要循环。只需检查当前 indexPath.

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