我有一个UITableView
,其中包含一系列项目。对于该表中的每个UITableViewcell
,根据关联对象到该单元格的属性,我通过将高度约束常量更改为0或者定义为要生成的值来切换UIButton
的可见性。它可见。我已经在Xcode设计器上检查了该按钮的Clip to Bounds
选项。
如果我向表格视图提供了一些项目列表,这些项目设置了一些可见的按钮,而其他项目隐藏并滚动,那么按钮可见的单元格可能会隐藏,反之亦然。当按钮上有少数单元格时,这一点更明显,没有按钮的情况下则更明显。
包含显示或隐藏 UIButton
的逻辑的方法来自单元格的UITableViewCell
自定义类,因为它如下:
public partial class UITableViewCellCustom : UITableViewCell
{
public Object obj;
public void SetObject(Object obj)
{
// Do something with obj...
// Do something with the obj that determines if the buttons should be collapsed or not
Boolean collapseButton = ...;
ToggleButtonVisibility(collapseButton);
}
private void ToggleButtonVisibility(Boolean collapse)
{
NSLayoutConstraint uiButtonCancelHeightConstraint = UIButtonCancel.Constraints
.FirstOrDefault(query => query.FirstItem == UIButtonCancel
&& query.FirstAttribute == NSLayoutAttribute.Height);
NSLayoutConstraint uiButtonCancelTopConstraint = this.ContentView.Constraints
.FirstOrDefault(query => query.FirstItem == UIButtonCancel
&& query.FirstAttribute == NSLayoutAttribute.Top);
if (collapse)
{
uiButtonCancelHeightConstraint.Constant = 0;
uiButtonCancelTopConstraint.Constant = 0;
}
else
{
uiButtonCancelHeightConstraint.Constant = 30;
uiButtonCancelTopConstraint.Constant = 10;
}
}
}
从SetObject
类调用UITableViewSource
方法,该类从正确的索引获取对象并将其设置为单元格(此处没有问题)。然后,当一些UILabel
文本用对象的值更改时,我检查按钮是否需要(这里没问题)。当我调用ToggleButtonVisibility
方法,并尝试更改两个约束 - 高度和顶部 - 应用值时,顶部< / strong>约束明显改变,但重用单元格时,高度约束似乎被忽略。
我试图强制ClipToBounds
到true
,强制主线程中的方法,但没有一个工作。我在这里缺少什么?
忘记提及:按下按钮时,表视图被清除(我向源提供空列表,然后重新加载数据),执行长任务,然后执行新操作列表应用于表格,但有问题的单元格仍保留 bugged 按钮。
Alpha
更改为0
或将Hidden
设置为true
隐藏按钮不是一种选择,因为它会留下洞< / em>在tableview中。答案 0 :(得分:0)
通过将UIButton
包装在UIView
上,然后根据我的需要调整视图大小来解决此问题。