Ios 更改UIView相对于UITableview的高度
在AlarmView中有一个名为AlarmView的视图和一个名为alarmtableview的tableview,还有一个textfield 现在我想要的是,当用户在textfield中输入任何数字时,tableview将被重新加载,行数等于用户输入的数字。 我最初将AlarmView高度设置为0,这样当文本字段为空时,AlarmView对用户不可见。 在重新加载alarmtableview之后,我将更新detailview的高度,该高度等于tableview的高度。 但当我运行应用程序时,视图的高度不会更新。即使在重新加载tableview之后,它仍然对用户不可见 下面是我为实现同样的目标而编写的代码Ios 更改UIView相对于UITableview的高度,ios,swift,uitableview,uiview,constraints,Ios,Swift,Uitableview,Uiview,Constraints,在AlarmView中有一个名为AlarmView的视图和一个名为alarmtableview的tableview,还有一个textfield 现在我想要的是,当用户在textfield中输入任何数字时,tableview将被重新加载,行数等于用户输入的数字。 我最初将AlarmView高度设置为0,这样当文本字段为空时,AlarmView对用户不可见。 在重新加载alarmtableview之后,我将更新detailview的高度,该高度等于tableview的高度。 但当我运行应用程序时,视
@IBOutlet weak var AlarmViewHeightConstraint: NSLayoutConstraint!
@IBOutlet weak var AlarmView: UIView!
@IBOutlet weak var AlarmTableView: UITableView!
@IBOutlet weak var FrequencyField: CustomUITextField!
func textFieldDidEndEditing(textField: UITextField) {
print("textFieldDidEndEditing called")
if textField === FrequencyField{
self.AlarmToggleAction(self.AlarmSwitch)
}
}
//MARK: ALARM Actions
@IBAction func AlarmToggleAction(sender: UISwitch) {
if sender.on{
if let count = Int(self.FrequencyField.text!) {
print("ON state")
alarmCount = count
AlarmTableView.reloadData()
print("AlarmTableView.frame.height : \(AlarmTableView.frame.height)")
AlarmViewHeightConstraint.constant = AlarmTableView.frame.height
}
}
else{
print("OFF state")
alarmCount = 0
//AlarmTableView.reloadData()
//AlarmViewHeightConstraint.constant = 0
}
}
//MARK: Tableview Actions
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
print("numberOfRowsInSection called alarmCount : \(alarmCount)")
return alarmCount
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
print("cellForRowAtIndexPath called")
let cell = tableView.dequeueReusableCellWithIdentifier("AlarmCell") as! AlarmCell
cell.TimeLabel.text = "Alarm \(indexPath.row + 1)"
cell.TimeField.tag = indexPath.row
cell.TimeSwitch.tag = indexPath.row
return cell
}
请帮我解决这个问题。
提前感谢尝试使用
contentSize
而不是框架大小,如:
AlarmViewHeightConstraint.constant = AlarmTableView.contentSize.height
如果您有合适的约束,它将自动完成,而无需任何代码。什么应该是合适的约束?只需固定所有边并为tableview提供>=高度约束。使用自动布局,只需将detailview和tableview的高度相等即可。只需根据条件隐藏或显示视图tableview行高的委托方法实现在哪里?使用此方法进行高度处理,然后只需重新加载tabledata