2012-04-20 4 views
4

아이폰 4.3의 경우 tableview에서 여러 행을 선택해야합니다. 액세서리보기 유형을 선택한 경우 셀의 배경색을 변경해야합니다. 여러 개의보기로 이동 한 후 다시보기로 전환해야합니다. 선택한 셀을 표시합니다.iPhone 4.3 용 Tableview에서 다중 셀 선택

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

I :

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

는 버튼 액션을 준 : 나는 다중 선택을 할 수 있어요

이 내가 IndexPath에서 행에 대한 셀에

을 구현 한 논리입니다 선택한 셀 값을 데이터베이스에 저장하고 해당 값을 다시 검색하여 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]; 
    } 
} 

감사합니다.

답변

1

이 code.It 당신이 당신의 문제를

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

     UITableViewCell *selectedCell = [self.selectionTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:([s integerValue] - 1) inSection:0]]; 
     [selectedCell setBackgroundColor:[[[UIColor alloc] initWithRed:0.725 green:0.894 blue:1 alpha:1] autorelease]]; 
     [self.selectionTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:([s integerValue] - 1) inSection:0] animated:NO scrollPosition:UITableViewScrollPositionMiddle]; 
    } 
} 
+0

고마워 그 작업을 해결하는 데 도움이 될 수 있습니다보십시오. – Srinivas

+0

하지만 cell.it을 선택 취소하고 싶지는 않습니다. – Srinivas

+0

일부 불량 값을 가져와 필요한 곳에 배치하십시오. – siva

관련 문제