【发布时间】:2014-07-09 20:32:24
【问题描述】:
我有一个UITableViewCell,它在触摸时会展开(下拉)。然后向用户呈现选项的选择。当用户触摸其中一个选项时,我想暂时隐藏所有选项,显示活动指示器旋转,显示确认消息(成功时),然后将单元格折叠回正常状态。
我无法在自定义单元格中隐藏任何对象。以下简单代码不起作用(这是与单元格对应的正确超级视图):
var customCell: MyCustomCell = icon.superview.superview.superview as MyCustomCell
customCell.myLabel.hidden = false
我尝试隐藏/显示各种不同的对象,但没有任何效果。我什至在dispatch_async 中弹出它以确保它在主线程上运行。
此外,Xcode 6 beta 告诉我myLabel.hidden 是只读的。这也发生在其他对象上。这不再是隐藏某些东西的正确方法了吗?
我已经四处搜索,但没有找到答案。如果有人可以帮助我,我将不胜感激!谢谢。
【问题讨论】:
-
什么都没有出现在我身上,所以相反:这就是我要做的:将
customCell.myLabel分配给一个变量以确保它是您认为的类型:var label: UILabel = customCell.myLabel。然后打印hidden的当前值:println(label.hidden)。接下来检查 customCell 是否仍在屏幕上(也许 tableview 已重新加载?)通过设置背景颜色(或任何适用于您的情况):customCell.backgroundColor = UIColor.redColor() -
有趣.. 我照你说的做了。隐藏标签,它打印出
true(正确),显示标签,它打印出false(正确)。更新了backgroundColor,它只是在单元格再次崩溃后才在视觉上更新(不是马上——我在调用backgroundColor后放了一个sleep(2)) -
也许尝试使用
customCell.setNeedsDisplay()强制重绘? -
运气不好。所有这些代码都在方法
iconPress(icon: UIButton!)中,在单元初始化期间通过addTarget附加到适当的图标。似乎只有在iconPress()返回后才能看到对单元格的任何更新。也许我的设置不是正确的方法? -
哦...好吧,如果您阻塞了 UI 线程(主线程),您将不会看到任何 UI 更新;)