2009-12-10 2 views
1

셀을 선택/강조 표시 할 때 색상이 바뀌는 몇 줄의 텍스트가 있습니다. 문제는 새로운 viewController가 푸시 될 때 텍스트가 갑자기 선택되지 않은 상태로 되돌아 가면 시각적으로 산만 해 보이는 선택 취소 애니메이션이 발생한다는 것입니다. 새보기 컨트롤러가 푸시 된 행 다음에 deselectRowAtIndexPath 문을 이동했지만 아무 효과가 없습니다.tableView의 deselectRowAtIndexPath 문제

타이머를 구현하지 않고 사용자가 셀 선택을 보지 못하게하려면 어떻게해야합니까? 어떤 도움이라도 부탁드립니다.

답변

7

테이블 뷰와 새로운 VC를 사용하는 일반적인 패러다임은 viewWillAppear:animated 메서드에서 테이블 행을 선택 취소했다는 것입니다. 그런 다음 VC가 팝업되면서 해당 VC로 이동하는 데 사용 된 행을 확인합니다.

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

    [self.myTableView deselectRowAtIndexPath:[myTableView indexPathForSelectedRow] animated:YES]; 

} 

didSelectRowAtIndexPath 메서드에서 deselectRow를 제거하십시오.

+0

감사합니다. 그러나, 내 viewWillAppear 메서드를 발사하지 않습니다? – RunLoop

+1

업데이트 : 내비게이션 컨트롤러를 사용하고 있기 때문에 viewWillAppear가 실행되지 않습니다. - (void) navigationController : (UINavigationController *) navigationController willShowViewController : (UIViewController *) viewController animated : (BOOL) animated – RunLoop

9

UITableViewController을 사용하는 경우 deselectRowAtIndexPath:으로 전화하지 않아도됩니다. 이 작업은 테이블보기가 다시 표시 될 때 자동으로 수행됩니다.

더 복잡한 인터페이스가있어서 UITableViewController을 사용하지 않는 경우 viewWillAppear:animated: 메서드에서 수동으로 deselectRowAtIndexPath:으로 전화해야합니다.

+0

재미 있습니다. 그 퀴즈의 비트를 알아라. – wkw

+0

나는 tableViewController를 사용하고 있지만 푸시 된 vc가 팝되면 행이 자동으로 선택 해제되지 않습니다. – RunLoop

+0

UITableViewController를 서브 클래 싱 했습니까? 그렇다면'[super viewWillAppear]'를 부르시겠습니까? UITAbleViewController의 개요 섹션을 읽으면 UITAbleViewController 기본 클래스가 제공하는 다양한 동작에 대해 설명합니다. – wkw

관련 문제