如何在使用UITableViewAutomaticDimension时手动设置某些单元格的设置高度?

时间:2016-09-16 13:45:01

标签: ios swift uitableview

我正在使用UITableViewAutomaticDimension来设置我的UITableView单元格的高度。对于过滤器功能,我需要隐藏一些单元格,我将通过将它们的高度设置为0来隐藏它们。

然而,当我覆盖heightForRowAtIndexPath时,我需要为我想要自动调整大小的行返回一些值。我该如何设置?

tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 50

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    if shouldHideCell == true{
        return 0
    }else{
        return automaticHeight // I need a value here!!!
    }
}

2 个答案:

答案 0 :(得分:3)

在您的情况下,尝试在方法中设置UITableViewAutomaticDimension,而不是在viewDidload中设置:

override func viewDidLoad() {
     super.viewDidLoad()
     tableView.estimatedRowHeight = 50
     ....
}


func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    if shouldHideCell == true{
        return 0.0
    }else{
        return UITableViewAutomaticDimension
    }
}

我希望您使用autoLayoutsUITableViewAutomaticDimension合作。 请注意,在heightForRowAtIndex方法之前调用cellForRow,因此请确保在此之前正确设置变量shouldHideCell

答案 1 :(得分:2)

如果您使用UITableViewAutomaticDimension我认为您正在使用自动布局,对吧? 如果使用自动布局,则可以通过更改具有高度或固有高度的约束的常量来“隐藏”单元格。 试试这个。