根据if语句更改tableview维度

时间:2018-03-15 05:24:40

标签: ios swift uitableview

我试图根据来自前一个视图控制器的数据调整tableView的大小。例如:

if previousData == "Acitivites" {
    tableView.height = 375
    tableView.width = 300
} else {
    tableView.height = 480
    tableView.width = 300
}

我不确定如何实现这一点,我将不胜感激任何指导!

3 个答案:

答案 0 :(得分:3)

设置heightConstraintTableView

的出口tableView
override func viewDidLayoutSubviews()
{
    heightConstraintTableView.constant = previousData == "Acitivites" ? 375 : 480

}

答案 1 :(得分:1)

您可以在viewDidLayoutSubviews中检查条件并更改tableview的框架。

Using $this when not in object context

答案 2 :(得分:0)

您可以动态设置约束,如下所示......

override func viewDidLayoutSubviews() {


    //setting height var
    var height: CGFloat = (previousData == "Acitivites") ? 375 : 480

    //top constraint
    tableView.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true

    //leading constraint
    tableView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor).isActive = true

    //trailing constraint
    tableView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor).isActive = true

    //height constraint
    tableView.heightAnchor.constraint(equalToConstant: height).isActive = true

    //setting height priority to avoid constraint breaking bcoz height, top and bottom is set
    let bottomconstraint = tableView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor)
    bottomconstraint.priority = .defaultHigh
    bottomconstraint.isActive = true

}

如果您已为高度约束创建了IBOutlet,则可以以编程方式设置它。

self.heightConstraint_tableView.constant = <new height>