我有一个自定义UITableViewCell,我在其中创建一个这样的图标:
self.icon = [[UIImageView alloc] initWithFrame:CGRectMake(15, 15, 50, 50)];
[self.icon setImage:[AppearanceProxyController getImageForAssetIdentifier:@"import"]];
[self addSubview:self.icon];
效果很好。另外还有隐藏图标的方法:
-(void)hideIcon{
dispatch_async(dispatch_get_main_queue(), ^{
[self.icon setHidden:true];
});
}
哪个......根本没有效果,我也不知道为什么。 从tableviewcontroller中轻击单元格时调用该方法。
检查表明它是隐藏的但不是。
UIImageView: 0x17d37d20; frame = (15 15; 50 50); hidden = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x17f8f4c0>> is hidden: 1
将uiimage设置为nil od,alpha为0.0也没有效果。我做错了什么?
答案 0 :(得分:3)
您可能有多个UIImageView
实例,但只能引用最新实例。当你隐藏它时,你会看到下面的旧实例(如果它们显示相同的图像)看起来像隐藏没有工作。
因此,您需要确保在旧实例上调用removeFromSuperview
,或者需要确保您不会创建多个实例。
答案 1 :(得分:0)
您的问题是您在每个uitableview单元格中创建self.icon。 每次都为init分配图标,以便self.icon保存你分配init的最后一个对象。如果你隐藏了self.icon,那么它会隐藏最后一个对象。
所以如果你想隐藏一些图像视图,只需在你的隐藏图标方法中传递这个对象
-(void)hideIcon : (UIImageView *)imageView{
dispatch_async(dispatch_get_main_queue(), ^{
[imageView setHidden:true];
});
}
当你想要隐藏
时调用它