我正在使用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];
答案 0 :(得分:1)
您绝对不希望drawRect
中包含此代码。您应该分配/初始化UIProgressView并将其作为子视图添加到UITableViewCell子类init
方法中(并确保在dealloc
中释放它)。
设置c1Progress.progress
和c1Progress.hidden
的逻辑应采用仅在value
,target
或dataExists
更改时调用的某种方法。如果你有一个针对有问题的数据/值的setter方法,那将是一个好的地方。
答案 1 :(得分:1)
检查dataExists的值...并在NSLog中打印它,如果这段代码每次都执行...从drawRect中删除...初始化并只释放一次......