: 당신이 초점 업데이트로 향하고 허용하지 shouldUpdateFocusInContext
를 오버라이드 (override) 할 필요가 다음
var presentDetail = false
권리.
override func shouldUpdateFocusInContext(context: UIFocusUpdateContext) -> Bool {
if context.focusHeading == .Right { return false }
return super.shouldUpdateFocusInContext(context)
}
다음 당신은이 preferredFocusedView
오버라이드 (override) 할 필요가 :
override var preferredFocusedView: UIView?{
if self.presentDetail {
self.presentDetail = false
guard let vc = self.splitViewController?.viewControllers[1] else { return nil }
return vc.view
}
return self.tableView
}
일반적으로 우리는 우리의있는 tableView를 돌아갑니다하지만 우리는 상세 뷰 컨트롤러에 포커스를 이동하고자 할 때 우리는 그 뷰를 돌아갑니다.
는 마지막으로 우리는
didSelectRowAtIndexPath
을 구현 :
우리가 우리의 마스터 뷰 컨트롤러 및 세부 뷰 컨트롤러에 초점 엔진에 대한 업데이트를 요청
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if let vc = self.splitViewController?.viewControllers[1] {
self.presentDetail = true
self.setNeedsFocusUpdate()
self.updateFocusIfNeeded()
vc.setNeedsFocusUpdate()
vc.updateFocusIfNeeded()
}
}
.