【问题标题】:IOS/Objective-C: Hide subviews of view in UITableViewCellIOS/Objective-C:在 UITableViewCell 中隐藏视图的子视图
【发布时间】:2018-02-01 14:52:39
【问题描述】:

我的印象是当你隐藏一个视图时,你也隐藏了它的所有子视图。

在这种情况下,我在 UITableViewCell 中有一个视图,我称之为 topView。使用 Storyboard,我给它一个实例变量self.topView--拖到UITableViewCell.htopView 在情节提要中创建了许多子视图,例如 myLabel。为了一次隐藏所有子视图,我会认为在引用单元格的表格视图的cellForRowAtIndexPath 中我可以说:

self.topView.hidden=YES;

但是,这没有任何效果。要隐藏也有 ivars 的元素,我需要单独隐藏每个元素,如下所示:

self.myLabel.hidden=YES;  //that works

当父视图被隐藏时,我是否误会了子视图被隐藏的信息。会不会跟在牢房里有关系?

提前感谢您的任何建议。

编辑:IB 截图

【问题讨论】:

  • topView 到底是什么意思?到 table-view-cell 的实例?还是实例的contentView?还是那是第三件事?
  • 隐藏视图会隐藏其子视图,您确定视图实际上是您要隐藏的视图的子视图吗?也许包括界面构建器布局的屏幕截图
  • 同意@SeanLintern88,我没有对此进行测试,但有可能没有被隐藏的超级视图剪辑的子视图不会显示为隐藏。所以在调试/日志输出中要注意的另一件事是子视图框架是否包含在 topView 框架中。
  • topView 指向一个名为 topView 的 UIView。它是 Content View 的子视图,而 Content View 又是 Cell 的子视图。 topView 有一堆我想一次性隐藏的子视图。
  • 我添加了截图。我很确定子视图框架——至少它们中的大多数都位于顶视图的范围内。

标签: ios objective-c hidden


【解决方案1】:

使用 KVC:

[topView.subviews setValue:@YES forKeyPath:@"hidden"];

【讨论】:

  • 我以前试过这个。它适用于大多数子视图,但不适用于按钮。另外,如果实际上所有子视图都应该在您隐藏超级视图后立即隐藏,那么似乎没有必要
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-31
  • 1970-01-01
  • 1970-01-01
  • 2016-08-14
  • 2018-05-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多