테이블 뷰의 각 UITableViewCell (2 셀 제외)에 추가되는 UIButton이 있습니다. 버튼의 대상은 UITableViewController입니다. 조치가 잘못된 대상으로 전송되었을 때 앱이 다운 된 것으로 나타났습니다. 나는 이것이 대상이 어떻게 든 할당 해제 되었기 때문에 (비록 UITableViewController가 할당 해제 되었다면 버튼이 보이지 않고 눌러 질 수 없어서 스스로 할당 해제되어야 함에도 불구하고)라고 가정합니다.UIButton 대상 작업 제거
removeTarget을 사용하여 addTarget 메서드의 균형을 잡아야한다고 생각합니다. KVO와 마찬가지로 보유/해제.
그러나 버튼을 생성하고 셀에 추가 할 때 버튼에 대한 참조 만 있기 때문에 어디서해야할지 모르겠습니다. cellForRowAtIndexPath:
? 이에있는 UIButton를 서브 클래 싱거나 다음 셀 또는 버튼이 해제 될 때 버튼의 대상 조치를 제거하기 위해 거기에 코드를 넣을 수있는 UITableViewCell를 서브 클래 싱 한 경우
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
UIButton *extraButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[extraButton setFrame:CGRectMake(0, 0, 60, 30)];
[extraButton setTitle:@"Meta" forState:UIControlStateNormal];
[extraButton addTarget:self action:@selector(extraButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
cell.accessoryView = extraButton;
}
if (indexPath.row == kNoExtraButtonRow) {
cell.accessoryView.hidden = YES;
} else {
cell.accessoryView.hidden = NO;
}
//set textlabels etc...
return cell;
}
세포를 도움이 될 것입니다 생각, 단지 서브 클래스가 아닌있는 UITableViewCell 있습니다. 버튼의 수명이 짧아야합니다. 오류가 발생하면 혼란 스러웠습니다. 나는 펜촉을 사용하지 않고있다. 실수로 UI 요소의 여러 인스턴스를 만드는 것이 무슨 뜻인지 잘 모르겠습니다. 여러 개의 셀이 있으므로 여러 인스턴스를 만들어야합니다. 내 질문에 코드를 추가하겠습니다. –
위의 코드가 올바른 것 같습니다. 실제 충돌 정보를 게시 할 수 있습니다. –
잘'stack '추적은'main' 메소드에서 멈추었으므로 꽤 도움이되지 않습니다. 예외는 : - [_ UIResizableImage extraButtonPressed :] : 인식 할 수없는 셀렉터가 인스턴스 0x29c480에게 보냈습니다. 그리고 이것은 테이블 뷰가 버튼을 포함하고 난 후에 화면을 벗어났습니다 (그래서 버튼을 터치 할 수 없었습니다) –