2011-06-15 3 views
0

삭제 만 허용하는 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 사이에서 올바르게 전환되지만 작은 빨간색 선은 표시되지 않습니다. 왜 이런 일이 일어날 수 있습니까?

+0

왜 [[super setEditing : animated :]'를 호출 한 다음 'self.editing =/* ... * /;'을 호출할까요? Self의 구현은 super를 자동으로 호출해야합니다. 이것은 아마도 문제가되지 않습니다. –

답변

0

UINavigationBarItem의 대상이 스택에 푸시 된 후속 뷰 컨트롤러가 아닌 첫 번째보기 컨트롤러로 설정되어 있다고 생각합니다.

+0

좀 더 자세히 설명해 주시겠습니까? 내가 어떻게 고칠 수 있니? – CodeGuy

+0

프로그래밍 방식으로 또는 IB에서 UINavigationBarItem을 만들 때 대상 (첫 번째보기 컨트롤러)과 선택기 (이 경우에는 editButtonSelected :)를 설정합니다. 탐색 스택에 푸시 된 새로운보기 컨트롤러로 대상을 변경하지 않고도 기본보기 컨트롤러에서 editButtonSelected : 메소드를 호출합니다. –

+0

하지만 그게 내가하고 싶은거야. 작은보기 빨간색 줄을 표시하려면 주보기 컨트롤러 (UITableView 있음) 원하는. – CodeGuy

관련 문제