삭제 만 허용하는 UITableView 편집에 사용되는 버튼 (UINavigationBarItem)이 있습니다. 그래서 delete 키를 누르면 각 셀 옆에 작은 빨간 선이 생기고 각 행을 삭제할 수 있습니다. 버튼을 누르면UITableView 편집이 작동하지 않습니다.
는 다음과 같은 함수를 호출 :
-(void)editButtonSelected:(id)sender {
if(self.editing)
NSLog(@"self.editing = true");
else
NSLog(@"self.editing = false");
if(self.editing) {
[super setEditing:NO animated:NO];
[tableView setEditing:NO animated:NO];
[tableView reloadData];
[leftButton setTitle:@"Delete"];
[leftButton setStyle:UIBarButtonItemStylePlain];
self.editing = false;
}
else {
[super setEditing:YES animated:YES];
[tableView setEditing:YES animated:YES];
[tableView reloadData];
[leftButton setTitle:@"Done"];
[leftButton setStyle:UIBarButtonItemStyleDone];
self.editing = true;
}
}
그리고 그것을 잘 작동합니다. 그러나 잠시 동안 만. 새 UIViewController를 소개하고 컨트롤러를 닫으면이 삭제 기능이이 기본 화면에서 작동하지 않습니다. 새로운 UIViewController가 맨 위에 올 때까지 제대로 작동합니다. 버튼 자체가 잘 작동하고 self.editing의 값이 true와 false 사이에서 올바르게 전환되지만 작은 빨간색 선은 표시되지 않습니다. 왜 이런 일이 일어날 수 있습니까?
왜 [[super setEditing : animated :]'를 호출 한 다음 'self.editing =/* ... * /;'을 호출할까요? Self의 구현은 super를 자동으로 호출해야합니다. 이것은 아마도 문제가되지 않습니다. –