2014-12-08 7 views
0
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; //count of section 
} 


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 

    return 30; //count number of row from counting array hear cataGorry is An Array 
} 



- (UITableViewCell *)tableView:(UITableView *)tableView 
     cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSString *[email protected]"pass"; 
    if ([testword isEqualToString:@"pass"]) { 
     static NSString *MyIdentifier = @"cell1"; 
     TextTableViewCell *cell ; 




     cell= [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 
     cell.lblText.text=[NSString stringWithFormat:@"textcelll= %i", indexPath.row+1]; 


     cell.btnTextbox.tag=indexPath.row; 
     [cell.btnTextbox addTarget:self action:@selector(customActionPressed:) forControlEvents:UIControlEventTouchUpInside]; 



     return cell; 

    }else{ 

    static NSString *MyIdentifier1 = @"cell2"; 

    ImageTableViewCell *cell1 = [tableView dequeueReusableCellWithIdentifier:MyIdentifier1]; 
     return cell1; 

    } 
} 
-(void)customActionPressed:(UIButton*)sender{ 

    CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.tableView1]; 
    NSIndexPath *indexPath = [self.tableView1 indexPathForRowAtPoint:buttonPosition]; 

    TextTableViewCell *cell = (TextTableViewCell*)[self.tableView1 cellForRowAtIndexPath:indexPath]; 

    if (indexPath != nil) 
    { 
     int currentIndex = indexPath.row; 
     NSLog(@"currentIndex == %d",currentIndex); 
     int tableSection = indexPath.section; 
     NSLog(@"tableSection == %d",tableSection); 
    } 
    if (!cell.btnTextbox.isSelected){ 
     cell.btnTextbox.selected=YES; 
     [cell.btnTextbox setImage:[UIImage imageNamed:@"checkClick.png"] forState:UIControlStateNormal]; 
     NSLog(@"button tag %i",cell.btnTextbox.tag); 
     NSLog(@"check click"); 

    }else{ 
     cell.btnTextbox.selected=NO; 
     [cell.btnTextbox setImage:[UIImage imageNamed:@"check.png"] forState:UIControlStateNormal]; 
     NSLog(@"check "); 

    } 

, 그때 내가있는 tableview를 스크롤하고, 버튼 클릭가 자동으로 표시 내가 알고 싶은, 정말로 무슨 일이 있었는지, 그리고 이것을 피하는 방법 (내가 스크롤 할 때)?uitableview 스크롤을 할 때 다른 셀 (클릭 된 셀 이미지가 변경됨)에서 표시 버튼을 클릭하는 방법 (버튼 이미지 변경)을 중지 하시겠습니까? 7 행 (indexpath.row = 6)</p> <p>질문에 내가 첫 번째 행 (indexpath.row = 0)의 버튼을 클릭하고 시뮬레이터

답변

0

셀을 다시 사용하기 때문에 cellForRowAtIndexPath에서 이미지를 한 상태 또는 다른 상태로 설정해야합니다 (한 이미지 또는 다른 이미지 설정).

실제로 일어나는 일은 하나의 셀에 대해 이미지를 설정했지만 그 셀이 전체 테이블을 통해 재사용되고 있다는 것입니다. 당신은 5 개의 셀 (한 화면에 얼마나 많은 셀을 넣을 수 있는지)을 사용하고 다음에로드 할 때 실제로 이미지와 함께 다시 사용합니다.

그래서 cellForRowAtIndexPath에서 버튼 상태가 선택되었는지 확인한 다음 적절한 이미지를 지정해야합니다.

- (UITableViewCell *)tableView:(UITableView *)tableView 
      cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSString *[email protected]"pass"; 
    if ([testword isEqualToString:@"pass"]) { 
     static NSString *MyIdentifier = @"cell1"; 
     TextTableViewCell *cell ; 




     cell= [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 
     cell.lblText.text=[NSString stringWithFormat:@"textcelll= %i", indexPath.row+1]; 


     cell.btnTextbox.tag=indexPath.row; 
     if (cell.btnTextbox.isSelected){ 
      [cell.btnTextbox setImage:[UIImage imageNamed:@"checkClick.png"]  forState:UIControlStateNormal]; 


     }else{ 
     [cell.btnTextbox setImage:[UIImage imageNamed:@"check.png"] forState:UIControlStateNormal]; 


    } 

     [cell.btnTextbox addTarget:self action:@selector(customActionPressed:) forControlEvents:UIControlEventTouchUpInside]; 



     return cell; 

    }else{ 

    static NSString *MyIdentifier1 = @"cell2"; 

    ImageTableViewCell *cell1 = [tableView dequeueReusableCellWithIdentifier:MyIdentifier1]; 
     return cell1; 

    } 
} 

완성을 위해이 종류의 셀에는 Xib 파일뿐 아니라 액세서리 유형을 사용하는 것이 좋습니다. 스토리 보드에서 액세서리 드롭 다운 또는 코드를 통해 설정할 수 있습니다.

cell.accessoryType = UITableViewCellAccessoryCheckmark; 
+0

댓글은 확장 토론이 아닙니다. 이 대화는 [채팅으로 이동되었습니다] (http://chat.stackoverflow.com/rooms/66425/discussion-on-answer-by-nickcatib-how-to-stop-the-display-button-click-change- 비). – Taryn