.hidden = YES 工作,但 .hidden = NO 不工作
Posted
技术标签:
【中文标题】.hidden = YES 工作,但 .hidden = NO 不工作【英文标题】:.hidden = YES working but .hidden = NO not working 【发布时间】:2015-06-30 20:01:17 【问题描述】:我有一个 UIImageView,在一个表格单元格中有一个自定义类,它也使用一个自定义类。 UIImageView 作为单元格的自定义类的属性连接。
UIImageView 有一个 UITapGestureRecognizer 调用方法被点击:我将单元格作为 UIImageView 的委托传递并尝试使用 cell.theOtherView.hidden = NO
取消隐藏另一个单元格视图 奇怪的是,隐藏 .hidden = YES
有效,但取消隐藏不是工作。
【问题讨论】:
您确定重绘不是问题吗?即setNeedsDisplay
?
什么叫 setNeedsDisplay 和在哪里?
与隐藏相比,取消隐藏包括重绘。那至少需要一个运行循环周期。您如何以及何时检查视图是否仍处于隐藏状态?
您最好根据您的数据模型重新绘制受影响的单元格。当您点击按钮时,更改数据模型并重新加载受影响的行。可能是屏幕上的单元格不再是您认为要更新的单元格?
【参考方案1】:
如果不查看您正在使用的代码,很难知道发生了什么(例如,您的代码可能永远不会真正到达将视图设置为隐藏的行),但正如 MattyAyOh 建议的那样,值得尝试
[cell.theOtherView setNeedsDisplay];
在您设置cell.theOtherView.hidden = YES;
之后。这将强制视图重绘自身。
【讨论】:
【参考方案2】:我的猜测是,一旦它被隐藏,它就不再接收到 Tap 手势。尝试使用cell.theOtherView.alpha = 0.0
。
【讨论】:
【参考方案3】:你应该先将你的对象注册到.h文件,然后你可以使用隐藏函数
【讨论】:
以上是关于.hidden = YES 工作,但 .hidden = NO 不工作的主要内容,如果未能解决你的问题,请参考以下文章
使用“hidden = YES”谓词崩溃获取 PHAsset
UIView: alpha:0, hidden:YES, removeViewFromSuperview 和 frame.origin.y = -100000 之间的性能/内存差异;