iPhone 4.3のテーブルビューで複数の行を選択する必要があります.アクセサリタイプなしで選択した場合、セルの背景色を変更する必要があります.複数のビューに移動した後、テーブルビューに戻ると、選択したセルを表示する必要があります.
複数の選択を行うことができます。これは私が実装したロジックです
IndexPath の行のセル:
cellButton = [UIButton buttonWithType:UIButtonTypeCustom];
cellButton.tag = indexPath.row;
cellButton.frame = CGRectMake(POSITION_LABEL_X, POSITION_LABEL_Y, 320, 60);
cellButton.backgroundColor = [UIColor clearColor];
[cellButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:cellButton];
if(self.selectedRows && [self.selectedRows containsObject:indexPath])
{
UIImage *rowBackground = [UIImage imageNamed:@"cellBG.png"];
((UIImageView *)cell.backgroundView).image = rowBackground;
cell.selectedBackgroundView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 60)] autorelease];
cell.selectedBackgroundView.backgroundColor = [[[UIColor alloc] initWithRed:0.725 green:0.894 blue:1 alpha:1] autorelease];
}
else {
cell.selectedBackgroundView.backgroundColor = [UIColor clearColor];
}
ボタン アクションを指定:
-(void) buttonPressed:(UIButton *)sender
{
UITableViewCell* selectedCell = (UITableViewCell*)sender.superview.superview;
if([sender isSelected])
{
[selectedCell setSelected:NO];
//sender.backgroundColor = [UIColor clearColor];
[selectedCell setBackgroundColor:[UIColor clearColor]];
[self.selectedRows removeObject:[NSNumber numberWithInt:sender.tag]];
[sender setSelected:NO];
}
else
{
[selectedCell setSelected:YES];
sender.backgroundColor = [[UIColor alloc] initWithRed:0.725 green:0.894 blue:1 alpha:1];
//[selectedCell setBackgroundColor:[[UIColor alloc] initWithRed:0.725 green:0.894 blue:1 alpha:1]];
[self.selectedRows addObject:[NSNumber numberWithInt:sender.tag]];
[sender setSelected:YES];
}
}
選択したセルの値をデータベースに保存していて、それらの値を再度取得して tableView に戻すことはできますが、これらの値を使用してセルを選択する方法がわかりません。
-(void) highlightSelectedValue
{
[self.selectedRows removeAllObjects];
NSLog(@"response %@",self.taskResponse.response);
NSArray *selected = [self.taskResponse.response componentsSeparatedByString:@","];
for (NSString *s in selected) {
[self.selectedRows addObject:[NSNumber numberWithInt:([s intValue] - 1)]];
UIButton *selectedButton = (UIButton*)cellButton;
[selectedButton setSelected:NO];
[selectedButton setTag:[s integerValue] -1 ];
[self buttonClicked:selctedButton];
[self.selectionTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:([s integerValue] - 1) inSection:0] animated:NO scrollPosition:UITableViewScrollPositionMiddle];
}
}
ありがとう。