0

だから私はここである種のやることリストを構築しようとしています - 私はテーブルビューを持っていて、各セルにはチェックボックスを表すサムネイルがあります。タッチすると、画像がいっぱいから空に、またはその逆に変わります。私が間違っていることは何ですか?ここにいくつかのコードがあります:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"taskCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

// Configure the cell...
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(5, 5, 32, 32)];
[button addTarget:self action:@selector(checkmarkPressed:) forControlEvents:UIControlEventTouchUpInside];
[button setImage:[UIImage imageNamed:@"checkbox_empty"] forState:UIControlStateNormal];
[button setTag:101];
[cell addSubview:button];
[cell setIndentationWidth:36];
[cell setIndentationLevel:1];
cell.textLabel.text = [[self.appDel.allTasks objectAtIndex:indexPath.row] taskName];
return cell;

}

- (void) checkmarkPressed:(UIButton *)sender{
if(sender.tag == 101){
    UITableViewCell *cell = ((UITableViewCell*)[sender superview]);
    NSLog(@"Cell %i", [self.tableView indexPathForCell:cell].row);
    UIImage *empty = [[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"checkbox_empty" ofType:@"png"]];
    UIImage *full = [[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"checkbox_full" ofType:@"png"]];
    if ([sender imageView].image == [UIImage imageNamed:@"checkbox_empty"]) {
        [sender setImage:full forState:UIControlStateNormal];
        [self.tableView reloadData];
    }
    if ([sender imageView].image == full) {
        [sender setImage:empty forState:UIControlStateNormal];
        [self.tableView reloadData];
    }
}

}

4

2 に答える 2

0

解決策を見つけました:

if ([sender imageView].image == [UIImage imageNamed:@"checkbox_empty"]) {
        [sender removeFromSuperview];
        [sender setImage:full forState:UIControlStateNormal];
        [[sender superview] addSubview:sender];
        [self.tableView reloadData];
    }
    else if ([sender imageView].image == [UIImage imageNamed:@"checkbox_full"]) {
        [sender removeFromSuperview];
        [sender setImage:empty forState:UIControlStateNormal];
        [[sender superview] addSubview:sender];
        [self.tableView reloadData];
    }
于 2012-07-06T13:26:38.267 に答える
0

タッチで画像を変更したいだけの場合は、このコードを試すことができます

- (void) checkmarkPressed:(UIButton *)tempButton{
    if (tempButton.tag == 101) {
        tempButton.tag = 104;
        [sender setImage:full forState:UIControlStateNormal];
    }
    else if (tempButton.tag == 104) {
        tempButton.tag = 101;
        [sender setImage:empty forState:UIControlStateNormal];
    }
    [self.tableView reloadData];
}
于 2012-07-06T11:27:13.253 に答える