複数の行を含むTableViewがあります。各行には、異なるカスタムUITableViewCellがあります。UIActionSheetを使用して、このセルの色を変更する必要があります。つまり、行を選択すると、セルの特定の色を選択するように求めるアクションシートがポップアップ表示されます。もう1つの重要なことは、セルが画面外に出ても、セルは色を保持する必要があるということです。
これが私のコードです。私のコードの問題は、セルがリアルタイムで更新されていないことです。行を再度選択すると、セルの色が更新されます。もう1つの問題は、下にスクロールすると、セルの色がデフォルトの白に変わることです。
UIColor *cellColour;
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
switch (indexPath.row)
{
case 0:
[self displayActionSheet];
cell.backgroundColor=cellColour;
break;
case 1:
cell.backgroundColor=[UIColor yellowColor];
break;
default:
break;
}
}
-(void) displayActionSheet
{
UIActionSheet *popupQuery = [[UIActionSheet alloc] initWithTitle:@"Select row colour" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Red",@"Green",nil];
popupQuery.actionSheetStyle = UIActionSheetStyleDefault;
[popupQuery showInView:self.view];
[popupQuery release];
}
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
switch (buttonIndex)
{
case 0:
NSLog(@"Red");
cellColour=UIColor.redColor;
break;
case 1:
NSLog(@"Green");
cellColour=UIColor.greenColor;
break;
case 2:
NSLog(@"Pressed Cancel");
cellColour=nil;
break;
default:
break;
}
}
助けてください。