.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 不工作的主要内容,如果未能解决你的问题,请参考以下文章

iOS必备知识点

使用“hidden = YES”谓词崩溃获取 PHAsset

引导模式关闭按钮 aria-hidden=true

UIView: alpha:0, hidden:YES, removeViewFromSuperview 和 frame.origin.y = -100000 之间的性能/内存差异;

UICollectionView 刷新后空白,cell的hidden全是yes自己隐藏了。

使用 NSLider 的 setHidden 不起作用 - Objective C