【发布时间】:2010-02-10 15:42:18
【问题描述】:
我有一个 UITableViewCell 的子类,其中包含几个元素 - UIImageViews、标签等。
由于此单元格旨在可重复使用,因此我希望能够根据当前显示的数据稍微更改其外观。
举个例子——我的自定义 UITableViewCell 中有这个视图:
UIImageView* delimeterView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cellDelimiter.png"]];
有时我希望能够像这样隐藏:
- (void) setRecord:(id)record__ {
if (record__.type == NO_DELIMETER_VIEW)
delimeterView.hidden = YES;
else
delimeterView.hidden = NO;
[self setNeedsLayout];
}
但问题在于,delimeterView 将始终显示在单元格上,就像它在 init 方法中绘制一次然后绘制上下文从未更改或清除一样。我已经尝试将单元格及其 contentView 的 clearsContextBeforeDrawing 属性设置为 YES,我还尝试将单元格及其 contentView 的 opaque 设置为 NO,因为我已经阅读过,如果您使用透明,则可能存在一些问题意见。
没有任何帮助。
看起来 UITableViewCell 从不清除其图形上下文,而只是在旧元素上进行绘制。
关于我做错了什么的任何提示?
我知道我可以通过自定义绘图来解决这个问题,但我不想这样做。
【问题讨论】:
-
你是否在每次从 -[UITableView cellForRowAtIndexPath:] 返回单元格时调用 -setRecord: (或者它被传递给 -[UITableViewDelegate tableView:willDisplayCell:forRowAtIndexPath:])?
-
是的,它旨在每次在 cellForRowAtIndexPath 方法中调用。
标签: iphone objective-c uitableview