次の問題で悩んでいます。
ボートのオプションのテーブル ビューがあります。各オプション (セル) には、名前、価格、およびオプションが選択されているかどうかを示すボタンがあります (添付のスクリーンショットを参照)-
問題は、セクション 1 のいくつかのオプションをタップすると、最後のセクションのセルでも button_pressed 状態になることです。細胞を再利用するからでしょうか?
これは、オプションを追加するために、セルがタップされたときに呼び出される関数です。
- (IBAction)cellButtonSelection:(id)sender {
float prezzoParziale;
UIButton * button = sender;
//NSLog(@"%@",button.superview.superview);
if ([button.superview.superview isKindOfClass:[CellOptions class]] ) {
CellOptions * cellOpt =(CellOptions *)button.superview.superview;
//BOOL selectionState = NO;
cellOpt.selected =! cellOpt.selected;
if(cellOpt.selected){
//UIButton *button = cellOpt.button1;
[button setImage:[UIImage imageNamed:@"checkedButton.png"] forState:UIControlStateNormal];
prezzoParziale = [cellOpt.label2.text floatValue];
[accessoriSelezionati addObject:cellOpt.label1.text];
[accessoriSelezionatiPrezzi addObject: cellOpt.label2.text];
NSLog(@"stampa: %@", accessoriSelezionati);
}else{
//UIButton *button = cellOpt.button1;
[button setImage:[UIImage imageNamed:@"uncheckedButton.png"] forState:UIControlStateNormal];
prezzoParziale = [cellOpt.label2.text floatValue] * -1;
[accessoriSelezionati removeObject:cellOpt.label1.text];
[accessoriSelezionatiPrezzi removeObject: cellOpt.label2.text];
}
[self updateTotal:prezzoParziale]; }
と.....
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
CellOptions * cellOpt;
cellOpt = [tableView dequeueReusableCellWithIdentifier:CellOption forIndexPath:indexPath];
cellOpt.label1.text = [[[accessoriXtipologia objectForKey:tipologia] objectAtIndex:indexPath.row] valueForKey:@"nome"];
cellOpt.label2.text = [[[[accessoriXtipologia objectForKey:tipologia] objectAtIndex:indexPath.row] valueForKey:@"prezzo"] stringValue];
return cellOpt;
}
編集:今それは働いています
cellForRowAtIndexPath に追加:
cellOpt.selected = [accessoriSelezionati containsObject:cellOpt.label1.text];
if (cellOpt.selected) {
[cellOpt.button1 setImage:[UIImage imageNamed:@"checkedButton.png"] forState:UIControlStateNormal];
}
else {
[cellOpt.button1 setImage:[UIImage imageNamed:@"uncheckedButton.png"] forState:UIControlStateNormal];
}
return cellOpt;