UIImageView在从超级视图中隐藏/删除后仍然可见



我希望你能找到我的问题的解决方案,因为我已经没有任何想法了。

我有一个表格视图,它有几个单元格。 某些单元格在其内容视图上具有另一个视图作为子视图。

此附加视图有 2 个子视图:1 个 UIImageView 和 1 个 UILabel。

现在,当我点击UIButton时,UIImageView应该被隐藏/删除,并且UILabel将其文本颜色更改为白色(之前为黑色)。

UILabel会更改其文本颜色,但UIImageView仍然可见,即使在从其超级视图中删除UIImageView后也是如此。

代码如下所示。
_adsc_dot_view是UIImageView
_adsc_text_label是UILabel。

- (void)mc_set_selected:(BOOL)selected {
    if (selected) {
        _adsc_dot_view.hidden = YES;
        _adsc_text_label.textColor = [UIColor whiteColor];
    }
    else {
        _adsc_dot_view.hidden = NO;
        _adsc_text_label.textColor = [UIColor blackColor];
    }
}

一些检查可能会发现对此问题有用:

1)确保你创建一次引用为_adsc_dot_viewUIImageView

2)进行调试,用断点标记mc_set_selected,并在日志中检查视图层次结构,您是否具有所需的UIImageView数量而不是更多

po [[UIWindow keyWindow] recursiveDescription]

或检查此高级SO答案:我需要检查iPhone程序上的视图层次结构

3) 如果您使用接口生成器,请确保您具有正确的类型(而不是 UIImage)和正确的引用

您正在使用UITableView,并将UIImageView和UILabel添加为UITableViewCell中的子视图。所以,我认为你应该使用 [self.tableView reloadData] 重新加载 UITabeView;或 [您的表名称重新加载数据];在隐藏并显示UIImageView方法之后。否则,您应该使用 UIImageView 标记或使用 UITableViewCell 索引路径隐藏和显示 UIImageView。

iOS 7 上的目标设备是吗?如果是,请尝试布局单元格的子视图。我遇到了类似的问题,即单元格在ios 7上无法刷新。

Just reload table view cell after Remove/Hide ImageView.

最新更新