2017-01-12 4 views
1

일반적으로 UINavigationController에 포함 된 UITableViewController이 세부 화면에서 반환되면 이전에 선택한 행의 강조 표시가 사라집니다.PageViewController에 포함 된 경우 UITableViewController의 UITableView 행을 선택 취소

UITableViewControllerUIPageViewController에 의해로드되었지만 지금까지 성공하지 못했을 때이 동작을 복제하려고합니다. UINavigationController>UIPageViewController>UITableViewController>DetailController

가 호출되지 않습니다 viewDidAppearUITableViewControllerviewDidAppeardeselectRow:atIndexPath: 테이블 뷰 방법을 퍼팅 : 세부 화면에있을 때

내 계층 구조를 명확하게합니다. 같은 방법으로 넣지 만, UIPageViewController의 효과가 있지만 선택이 사라지 기 전에 눈에 띄는 지연이 있습니다.

누구든지 제대로 작동하도록 관리 했습니까?

+0

같은 문제가있는 경우 ... (다음 30 분) 고정 될 때 대답합니다 – Jake

답변

0

는 내가 있는 UITableViewController이 UINavigationController가에 의해로드 할 때이 동작을 복제하려고 UITableView 또는 여기 UITableViewController

를 참조하지만, 지금까지 실패되었습니다.

UITableViewController 인 경우, clearsSelectionOnViewWillAppear 속성이 있습니다. 기본값은 true입니다.

+0

이 경우에는 문제가 호출되지 않습니다. 내 질문을 계층 구조로 업데이트하겠습니다. – jjatie

0

하지 이상적인 솔루션, 그러나 이것은 나를 위해 작동 ...

테이블보기 컨트롤러 코드 변경 :

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 
    self.tableView.reloadData() //added this 
} 

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "appCell") as! AppTableViewCell 
    cell.app = apps[indexPath.row] 
    cell.delegate = self 
    cell.reset() //added this 
    return cell 
} 

표보기 셀 코드 변경 : 기본적으로

//added this method 
func reset() { 
    shortcutTypesTableView.reloadData() 
} 

, I 전체 테이블 뷰를 다시로드하고, tableView(_:cellForRowAt:)에서 각 셀의 테이블 뷰를 다시로드하도록 재설정 할 각 셀을 알려줍니다.

이 테이블 뷰를로드 할 때 (적어도 아직) 내 앱에 오버 헤드가 없으므로 성능 차이를 느끼지 못합니다. 그러나 나는 성능면에서이 솔루션을 "이상적"이라고 부르지 않을 것입니다.

+0

'viewWillAppear'이 절 결코 호출되지 않습니다. – jjatie