2013-01-19 7 views
0

UITableViewCell의 UIButton에 문제가 있습니다. 프로토 타입 셀을 사용하여 스토리 보드에 사용자 정의 tableviewcell을 만들었습니다. 두 개의 버튼이 있으며 태그를 설정했습니다. 테이블 뷰를 처음으로 그리면 모든 것이 올바르게 표시되지만, 데이터를 스크롤하거나 업데이트하고 reloadData를 tableview에서 호출하면 올바르게 업데이트되지 않습니다.UITableViewCell의 UIButton이 0입니다.

코드 : 모든 가시의 행에

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

static NSString *CellIdentifier = @"Moment Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];   
} 

NSLog(@"Cell: %@", cell); 

[cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 
NSArray *row = [mMoment objectAtIndex:indexPath.row]; 

UILabel *label; 

label = (UILabel *)[cell viewWithTag:101]; 
label.text = [row objectAtIndex:0]; 

label = (UILabel *)[cell viewWithTag:102]; 
label.text = [NSString stringWithFormat:@"Koeff: %@",[row objectAtIndex:2]]; 


UIButton *button; 
NSString *btn_title; 

button = (UIButton *)[cell viewWithTag:104]; 

NSLog(@"Button: %@", button); 

[button setTag:1]; 
btn_title = [NSString stringWithFormat:@"%@", [row objectAtIndex:4]]; 
[button setTitle:btn_title forState:(UIControlState)UIControlStateNormal]; 
[button addTarget:self action:@selector(poangButtonClick:event:) forControlEvents:UIControlEventTouchUpInside]; 

NSLog(@"Row: %d, Poäng: %@", indexPath.row, btn_title); 

label = (UILabel *)[cell viewWithTag:103]; 
label.text = btn_title; 

button = (UIButton *)[cell viewWithTag:105]; 
[button setTag:2]; 
btn_title = [NSString stringWithFormat:@"%@", [row objectAtIndex:5]]; 
[button setTitle:btn_title forState:(UIControlState)UIControlStateNormal]; 
[button addTarget:self action:@selector(poangButtonClick:event:) forControlEvents:UIControlEventTouchUpInside]; 

return cell; 

}

처음 button = (UIButton *)[cell viewWithTag:104];라고는, 모든 것이 정확하지만 내가 스크롤 뷰를 다시로드하면, 버튼이 전무하다? 왜? 동일한 방식으로 레이블을 검색하면 올바르게 표시됩니다. 셀의 단추 레이블을 변경하려면 어떻게해야합니까?

감사

/프레드릭

답변

4

빠른 추측 : 나는 당신이 그것을 참조하지만 데 사용하는 버튼 "태그"값을 재설정하는 참조하십시오. 그래서 당신은 값이 104 이상 (그것을 변경 후)를 가져 오지 못할 (지금 1 최초 생성 후 2)

[button setTag:1]; 

그래서, 당신은 늘

button = (UIButton *)[cell viewWithTag:105]; 
을 통해 다음 번에 얻을

내 가정은 셀이 할당 해제되지 않으므로이 태그 값이 유지된다는 것입니다. 어쩌면 이것으로 해결할 수 있습니다.

+0

예! 그것은 참으로 문제가되었습니다! :) 그 태그가 동일하다는 것을 깨닫지 못했습니다 ... 감사합니다 !! – jymdman