UITableViewCell의 하위 클래스에서 UIButton을 제거하는 데 문제가 있습니다. 이 단추는 셀이 테이블보기의 첫 번째 셀인 경우에만 추가됩니다. 따라서이 버튼은 아무 것도 없거나 UIButton 클래스의 인스턴스가 될 수 있습니다. 또한 이러한 모든 셀의 식별자가 동일하기 때문에 버튼이있는 첫 번째 셀이 아래로 이동하는 상황이 발생할 수 있습니다. 그런 다음이 버튼을 제거해야합니다.UITableViewCell에서 UIButton 제거
나는 그런 방식으로 일을 해요 :
if(callBtn != nil) {
[callBtn removeFromSuperview];
}
는 그러나, 응용 프로그램의 충돌이 발생합니다.
첫 번째 셀과 다른 셀에 다른 식별자를 사용하면이 문제를 해결할 수있을 것입니다. 아마도 더 나은 솔루션 일 것입니다. 그러나, 나는이 코드가 잘못되었거나 UITableViewCell의 하위 클래스에서 하위 뷰를 제거하는 동안 무엇을 알아야하는지 알고 싶습니다. @EDIT
:
NSString *ident = @"HistoryCell";
HistoryItemCell *cell = (HistoryItemCell *)[tableView dequeueReusableCellWithIdentifier:ident];
// If there is no reusable cell of this type, create a new one
if (!cell) {
if(indexPath.row == 0) {
cell = [[[HistoryItemCell alloc] initWithStyle:UITableViewCellStyleDefault withCallBtn:YES reuseIdentifier:ident] autorelease];
} else {
cell = [[[HistoryItemCell alloc] initWithStyle:UITableViewCellStyleDefault withCallBtn:NO reuseIdentifier:ident] autorelease];
}
} else {
if(indexPath.row != 0) {
[cell removeCallBtn];
}
}
History *history = [[[Store defaultStore] allHistories] objectAtIndex:indexPath.row];
[cell setDataFromModel:history];
return cell;
추가 버튼 코드 : 여기 세포가 생성되는 코드입니다
if(withCallBtn == YES) {
callBtn = [[UIButton alloc] initWithFrame:CGRectZero];
callBtn.tag = CALL_BUTTON_TAG;
[callBtn addTarget:self action:@selector(callBtnAction:) forControlEvents:UIControlEventTouchUpInside];
// setting background, title, etc
[self.contentView addSubview:callBtn];
[callBtn release];
}
인사말, 아담
버튼을 추가하면 코드가 표시됩니다. 가장 가능성이있는 코드는 –
입니다. "버튼 코드 추가"라는 제목의 코드는 어디에 있습니까? 그리고 removeCallBtn은 어떻게 생겼습니까? superview에서 단추를 제거했는데 단추를 놓을 것이라고 생각하지만 callBtn을 nil로 설정하지 마십시오. 둘 중 하나를 수행하고 수퍼 뷰에서 제거하기 전에 callBtn을 유지하거나 다시 제거 할 때 변수를 nil로 설정하고 다시 사용할 때 다시 작성해야합니다. 여기에 전체 코드를 게시하는 것이 더 좋습니다. 어딘가에 논리적 오류가 있습니다. BTW, ARC를 사용하지 않습니까? –
행운이 있나요? – lnafziger