1

Appleのカスタムテーブルビューセルコードを使用しており、セルビュー内のdrawRectコードを希望どおりに変更しています。UILabelsとUIProgressViewを持つように変更しました。

セルが構築されているデータに特定のフィールドがない場合は、UIProgressViewを非表示にします。これはしばらくは機能しますが、セルがスクロールから再キューイングされると、hidden = YESに設定した場合でも、進行状況ビューが再び表示され始めます。データがそこにあり、それも機能しない場合を除いて、ProgressViewを作成しないようにしました。

答えは[selfsetNeedsDisplay]にあると思いましたが、それは役に立たないようです。

引き続き表示される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];
4

2 に答える 2

1

このコードは絶対に必要ありませんdrawRect。UIProgressViewを割り当て/初期化し、UITableViewCellサブクラスinitメソッドのサブビューとして追加する必要があります(必ずでリリースしてくださいdealloc)。

設定のロジックは、、、、またはが変更されたときにのみ呼び出されるメソッドで実行する必要がc1Progress.progressあります。問題のデータ/値のセッターメソッドがある場合は、それが適しています。c1Progress.hiddenvaluetargetdataExists

于 2010-04-09T04:25:05.637 に答える
1

dataExistsの値を確認して...NSLogに出力し、このコードが毎回実行される場合は...これをdrawRectから削除してください...初期化して1回だけ解放してください...

于 2010-04-09T04:29:01.347 に答える