Ios 根据if语句更改tableview维度

Ios 根据if语句更改tableview维度,ios,swift,uitableview,Ios,Swift,Uitableview,我试图根据来自上一个视图控制器的数据调整tableView的大小。例如: if previousData == "Acitivites" { tableView.height = 375 tableView.width = 300 } else { tableView.height = 480 tableView.width = 300 } 我不知道该如何具体实施,我希望得到任何指导 您可以检查ViewDidLayoutSubView中的条件并更改tablevi

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

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

我不知道该如何具体实施,我希望得到任何指导

您可以检查ViewDidLayoutSubView中的条件并更改tableview的框架

override func viewDidLayoutSubviews()
{
    if previousData == "Acitivites" {
        tableView.frame = CGRect(x: 0, y: 0, width: 300, height: 375)
    }
    else
    {
        tableView.frame = CGRect(x: 0, y: 0, width: 300, height: 480)
    }
}

您可以检查ViewDidLayoutSubView中的条件并更改tableview的框架

override func viewDidLayoutSubviews()
{
    if previousData == "Acitivites" {
        tableView.frame = CGRect(x: 0, y: 0, width: 300, height: 375)
    }
    else
    {
        tableView.frame = CGRect(x: 0, y: 0, width: 300, height: 480)
    }
}

设置
tableView

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

}

设置
tableView

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

}

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

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>
self.heightConstraint\u tableView.constant=

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

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>
self.heightConstraint\u tableView.constant=

不清楚您在问什么如果从上一个控制器传入的数据符合特定条件,我希望表格视图填充整个屏幕。如果它不符合这个标准,我希望表视图只占屏幕的一半。因此,我试图在if语句中调整tableview的大小。在故事板中有tableview吗?你在使用约束吗?是的,tableview在故事板中,我目前没有约束,但我稍后会添加约束。因此,您可以通过编程设置tableView的heightConstraint来实现这一点。不清楚您在问什么我希望如果从上一个控制器传入的数据满足特定条件,则table view可以填充整个屏幕。如果它不符合这个标准,我希望表视图只占屏幕的一半。因此,我试图在if语句中调整tableview的大小。在故事板中有tableview吗?您使用的是约束吗?是的,tableview在序列图像板中,我目前没有约束,但我稍后将添加约束。因此,您可以通过编程设置tableview的heightConstraint来实现这一点。不建议在
viewDIdLoad()
中更改帧,请在
viewDidLayoutSubviews()中执行此操作
为什么在viewdidload中设置此选项是错误的?此处描述的函数将被多次调用,这是不需要的。在
viewDIdLoad()中更改帧是不可取的,请在
viewDidLayoutSubviews()中执行此操作。
为什么在viewDIdLoad中设置此错误?这里描述的函数将被多次调用,这是不需要的