ios - 第四个 UITableViewCell 重用第一个单元格的高度

标签 ios swift uitableview reuseidentifier

我有一个从 Parse 检索图像的 TableView。图像长宽比各不相同。我对其进行了设置,以便更改图像的宽度以匹配用户设备的宽度,并且调整高度以匹配宽高比。

我的问题是,每当我运行应用程序时,前三个单元格运行得很好,但第四个单元格仅获取第一个单元格的高度,因此图像具有信箱效果。与第五和第六个单元格相同,依此类推(第五个单元格取第二个单元格的高度,第六个单元格取第三个单元格的高度,第七个单元格取第四个单元格的高度,第四个单元格的高度为第一个单元格的高度,依此类推)。

解决这个问题的最佳方法是什么?

如果您需要查看更多代码,请告诉我。我不确定是否还有其他相关的事情。

TableViewController

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! HomeScreenTableViewCell

    tableView.estimatedRowHeight = 100
    tableView.rowHeight = UITableViewAutomaticDimension

    //image retrieved from Parse
    imageFiles[indexPath.row].getDataInBackgroundWithBlock { (data, error) -> Void in
        if let downloadedImage = UIImage(data: data!)
        {
            cell.postedImage.image = downloadedImage
        }

    }

    cell.postId = postId[indexPath.row]
    cell.username.text = usernames[indexPath.row]
    cell.delegate = self
    return cell
}

最佳答案

您是否正在实现 heightForRowAtIndexPath 方法?由于高度可变,因此还必须实现该方法,以便每当创建或重用新单元格时,都会设置正确的高度。 您可以将所有高度存储在数组中,也可以从 Parse 返回的数组图像中获取它。 在 Objective C 中会是这样的,但我很确定你也可以在 Swift 上做到这一点。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return images[indexPath.row].height;
}

希望这有帮助。

关于ios - 第四个 UITableViewCell 重用第一个单元格的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31750729/

相关文章:

swift - 奥特莱斯与奥特莱斯系列

swift - iAd 插屏呈现延迟

UITableView 分隔线在滚动时单元格之间消失

iphone - drawRect 中的可拉伸(stretch)图像导致滚动缓慢

IOS Tableview 选择行不工作

iphone - iOS 上 PhoneGap 2.0 的应用内购买 (IAP) 插件?

swift - 定义一个在 Swift 中调用自定义函数的中缀运算符

ios - UIImage颜色改变?

iphone - Objective C 在自动释放对象上泄漏内存

iphone - UITableview - TableView :didDeselectRowAtIndexPath: method not working properly?