隐藏/从superview中删除后,UIImageView仍然可见

时间:2013-09-18 15:33:10

标签: iphone ios objective-c uitableview uiimageview

我希望你能找到解决我问题的方法,因为我不再有任何想法了。

我有一个tableview,它有几个单元格。一些单元格在其contentView上有另一个视图作为子视图。

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

现在,当我点击一个UIButton时,应该隐藏/删除UIImageView,并且UILabel将它的textColor更改为白色(之前为黑色)。

UILabel更改了它的textColor,但即使从UIImageView的超级视图中删除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];
    }
}

4 个答案:

答案 0 :(得分:0)

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

1)确保创建一个引用为_adsc_dot_view UIImageView

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

po [[UIWindow keyWindow] recursiveDescription]

或查看此高级SO答案:I need to inspect the view hierarchy on an iPhone program

3)如果您使用Interface Builder,请确保您具有正确的类型(而不是 UIImage )和正确的参考

答案 1 :(得分:0)

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

答案 2 :(得分:0)

是iOS 7上的目标设备吗?如果是,那么尝试布局单元格的子视图。我有一个类似的问题,在ios 7上细胞没有刷新。

答案 3 :(得分:0)

Just reload table view cell after Remove/Hide ImageView.