1

基本的に、各セルに uiprogressview と uiswitch を含む uitableview があります。スイッチを切り替えると、progressview の可視性が切り替わります。

しかし。

行のスイッチを切り替えると:0. 行:0 AND 行:11 のプログレスビューが表示されます。

私のスイッチはこれを持っています: [(UISwitch *)cell.accessoryView addTarget:self action:@selector(PrefetchStudy:) forControlEvents:UIControlEventValueChanged];

アクションは次のとおりです。

-(void)PrefetchStudy:(id)sender
{
UISwitch *tmpSwitch = (UISwitch*)sender;

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:tmpSwitch.tag inSection:0];
CustomCell *cell = (CustomCell *)[self.tableview cellForRowAtIndexPath:indexPath];
NSString *tmp =  cell.patient_name.text;
NSLog(@"This is the patient name of the selected row: %@", tmp);
if(tmpSwitch.on)
{
    cell.progressBar.hidden = NO;

}
else
{
    cell.progressBar.hidden = YES;
}


}

なぜこれが起こっているのかについての提案はありますか?

4

2 に答える 2

0

UITableView は uitableviewcell を再利用してパフォーマンスを向上させるため、各セルが一意であるとは言えません。(この場合、行 11 は行 1 セルを再利用します)、次のセルの状態をリセットする必要があります。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
于 2012-09-21T07:55:57.267 に答える
0

コードにいくつかのブレークポイントを設定しましたか? その場合、このメソッドは 2 回 (行 0 に対して 1 回、行 11 に対して 1 回) 呼び出されていますか、それとも cellForRowAtIndexPath メソッドが行 11 を行 0 の可視性で誤って更新していますか?

于 2011-03-23T19:58:56.917 に答える