我想根据用户与按钮的交互来更改UITableView高度。当用户点击按钮时,UITableView会扩展并单击相同的按钮UITableView高度降低仅显示第1行。以下是我的代码
tblFaults?.setNeedsUpdateConstraints()
self.view.setNeedsUpdateConstraints()
if (currentNumber == 1)
{
currentNumber = 2
var newFrame = tblFaults?.frame
newFrame?.size.height += 67;//tried to change frame as well
tblFaults?.frame = newFrame!
faultViewHeight?.constant = 115
//faultView height is tableview height constraint
}
else
{
currentNumber = 1
var newFrame = tblFaults?.frame
newFrame?.size.height -= 67;
tblFaults?.frame = newFrame!
faultViewHeight?.constant = 48
}
tblFaults?.reloadData()
//self.view.setNeedsLayout()
//self.view.setNeedsDisplay()
我在代码之后尝试了setNeedsDisplay,setNeedsLayout以及layoutSubviews()。但是按钮单击后视图不会立即刷新,但只有在下次用户交互后才会刷新(例如滚动视图更改等)
答案 0 :(得分:1)
试试这个:
faultViewHeight?.constant = 48
tblFaults.layoutIfNeeded() // you need to call this method
答案 1 :(得分:0)
谢谢大家。 实际上只有约束常量值更改和tableview.reloadData()就足够了。我做的大错是,我正在检查模拟器上的执行。我在设备上尝试了这个,它工作得非常好。在模拟器上,即使在尝试self.view.layoutIfNeeded()之后我也面临着这个问题。我仍然不知道为什么这是模拟器上的行为而不是设备上的行为。但最终应用必须在设备上运行并在那里工作。 :) 谢谢大家。