2012-07-06 2 views
0

여기에 빌드 할 일 목록이 있습니다. 테이블보기가 있고 각 셀에 확인란을 나타내는 축소판이 있습니다. . 만져서, 이미지를 변경하고 싶습니다. 내가 뭘 잘못하고있어? 여기에 몇 가지 코드입니다 :iOS 5 - 터치시 테이블보기 셀의 축소판 그림을 변경하십시오.

- (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]; 
    } 
} 

}

답변

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]; 
} 
+0

작동하지 않습니다. (겹쳐서 표시되는 미리보기 이미지가 많습니다. – nemesis

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]; 
    } 
관련 문제