1

我正在使用苹果的自定义表格视图单元格代码并修改单元格视图中的 drawRect 代码,使其看起来像我想要的那样。我已将其更改为具有一些 UILabel 以及 UIProgressView。

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

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

以下是 drawRect 中继续显示的进度视图的代码:

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];
4

2 回答 2

1

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

于 2010-04-09T04:29:01.347 回答
1

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

设置c1Progress.progress和的逻辑c1Progress.hidden应该放在一些只在 、 或 变化时调用的value方法targetdataExists。如果您有相关数据/值的 setter 方法,那将是一个好地方。

于 2010-04-09T04:25:05.637 回答