2014-12-30 2 views
1

테이블 뷰 셀을 선택 취소하고 싶습니다. 그러나 5 초 후 자동으로 선택되었습니다. 나는이 방법 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath내가 선택한 시간 이후에 셀 선택 해제

[NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector ([tableView deselectRowAtIndexPath:indexPath animated:YES]) userInfo:nil repeats:NO]; 

같은 NSTimer을 시도하지만, 엑스 코드 나 실패했다.

도와주세요 감사합니다.

답변

1

아마 주 스레드에서 수행되어야합니다. 그것을 파견으로 바꾸면 스스로를 소멸시킬 것입니다.

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 5 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ 
     [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
}); 

이렇게하면 5 초 후에 호출이 전달 된 다음 주 스레드에서 선택 취소를 수행합니다.

+0

dispatch_after는 제공된 대기열 (주 대기열)에서 실행되므로 여기서는 불필요합니다. – execv

+0

아, 잘 잡으세요. 편집 됨. – Rick

+0

tableView가있는 장면에서 벗어나서 할당을 해제해야하는 경우 메모리가 누출되지 않도록 tableView에 약한 포인터를 만들어야합니다. –