自定义UITableViewCell没有正确隐藏视图

时间:2010-04-09 03:41:58

标签: iphone uitableview drawrect

我正在使用apple的自定义表格视图单元格代码并修改单元格视图中的drawRect代码,看起来像我想要的那样。我把它改成了UILabels以及UIProgressView。

如果正在构建单元格的数据没有某个字段,我希望隐藏UIProgressView。这有效一段时间,但是当一个单元格从滚动中重新排队时,进度视图将再次开始显示,即使我将其设置为hidden = YES。我已经尝试过不创建ProgressView,除非数据存在且不起作用。

我认为答案是在[self setNeedsDisplay]中,但这似乎没有帮助。

以下是继续显示的drawRect的progressview代码:

UIProgressView *c1Progress = [[UIProgressView alloc]initWithFrame:CGRectMake(20.0, 70.0, 280.0, 12.0)];   
float iProgress = (value / target);
c1Progress.progress = iProgress;
if (!dataExists) {
    c1Progress.hidden = YES;
}
[self addSubview:c1Progress];
[c1Progress release];

2 个答案:

答案 0 :(得分:1)

您绝对不希望drawRect中包含此代码。您应该分配/初始化UIProgressView并将其作为子视图添加到UITableViewCell子类init方法中(并确保在dealloc中释放它)。

设置c1Progress.progressc1Progress.hidden的逻辑应采用仅在valuetargetdataExists更改时调用的某种方法。如果你有一个针对有问题的数据/值的setter方法,那将是一个好的地方。

答案 1 :(得分:1)

检查dataExists的值...并在NSLog中打印它,如果这段代码每次都执行...从drawRect中删除...初始化并只释放一次......