2012-01-11 1 views
0

테이블 뷰를 사용하여 1을 더하거나 1을 뺍니다. cell.textLabel.text의 값으로 1을 뺍니다. 그러나 뷰를 전환하고 셀을 반환하거나 스크롤 할 때 보기로 돌아 오면 다시 textLabel의 값이 원래 출발점 인 1으로 돌아갑니다! 도와주세요! 여기에 1을 더하거나 뺄 코드가 있습니다 :셀이 뷰 밖으로 스크롤 될 때 TableViewCell의 textLabel 값이 1로 돌아갑니다.

- (IBAction)addLabelText:(id)sender{ 

    cell = (UITableViewCell*)[sender superview]; // <-- ADD THIS LINE 

     cell.textLabel.text = [NSString stringWithFormat:@"%d",[cell.textLabel.text 
                   intValue] +1]; 

} 


- (IBAction)subtractLabelText:(id)sender 
{ 
    cell = (UITableViewCell *)[sender superview];   
    if ([[cell.textLabel text] intValue] == 0){ 
     cell.textLabel.text = [NSString stringWithFormat:@"%d",[cell.textLabel.text intValue] +0]; 
    } 
    else{ 
     cell.textLabel.text = [NSString stringWithFormat:@"%d",[cell.textLabel.text intValue] -1]; 
    } 
} 

답변

1

를 다시 변경 후

+0

괜찮습니다. 당신의 충고를 받아서 다음과 같이 덧붙였습니다. '- (IBAction) addLabelText : (id) 보낸 사람 { cell = (UITableViewCell *) [보낸 사람 수퍼 뷰]; num = [NSString stringWithFormat : @ "% d", [cell.textLabel.text intValue] +1]; [number addObject : num]; [myTableView reloadData]; } 이 방법을 사용할 수 있습니까? 괜찮아요,하지만 빼고 일할 수는 없어요! 도와 줘서 고마워 +1 – iProRage

+0

아니! 초기 코드 (예 : 질문의 코드)가 작동합니다. 셀 식별자를 고유하게 만들었다 고 가정하면 두 메서드의 끝에 [myTableView reloadData]를 추가하면됩니다. 그리고 작동합니다. 행운을 빌어 요. – nomann

+0

alirght, 다시 한 번 감사드립니다! :디 – iProRage

2

이것은 셀이 스크롤 할 때 다시 사용되기 때문에 발생합니다. 테이블 뷰의 데이터 소스 메서드가 호출되므로 값이 원래 값으로 재설정됩니다. NSNumber의 배열을 tableview에 대한 데이터 소스로 유지할 수 있습니다 (cellForRowAtIndexpath :, 셀 레이블을 배열에서 설정). 더하기 또는 빼기가 필요할 때마다 해당 NSNumber obj를 실행하고 tableview를 다시로드하십시오.

+0

좋아요, 당신이 말하는 것을 이해한다고 생각합니다. 내 tableView 이미지와 동일하게 생각합니다. 내 'cellForRow' 메소드에이 코드가 있습니다 :'cell.imageView.image = [imageArray objectAtIndex : indexPath.row];'이게 당신이 말하는 겁니까? 그리고 이걸 NSNumber로 바꿔줘야합니까? 도와 줘서 고마워 !! – iProRage

1

데이터 모달을 업데이트하지 않습니다. 그것이 원래의 콘텐츠 가치를 취하는 이유입니다. 새로운 셀마다 ..을 할당하고 셀 재 usablility 방법을 사용하지 않는 것처럼 셀 텍스트 값의 tableview [self.tableview reloadData]

+0

먼저, 도와 주셔서 감사합니다. 둘째, 모달이 무엇인지 확실하지 않으므로 좀 더 설명해 주시겠습니까? 고마워요, 다시 – iProRage

0

보인다. 경우에 따라 이전 값으로 산술 연산을 수행하고 이전 값을 저장할 배열이없는 경우. 이 문제를 해결하는 가장 쉬운 방법은 셀 식별자를 고유하게 만드는 것입니다. (@ "Cell-% d", indexPAth.row와 같은 것)

참고 : 그러나 셀 식별자를 고유하지 않고 데이터를 채우는 배열에 결과를 저장하는 것이 더 효율적입니다.