2017-04-13 2 views
1

tabview 컨트롤러의 해당 뷰에서 사용할 tabview 컨트롤러로 tableview 셀의 데이터를 전달하려고합니다. 그러나 오버라이드 된 func prepare 메서드는 호출되지 않고 프로그램은이 메서드를 완전히 무시한 탭 뷰 컨트롤러로 이동합니다. UIViewController의 segue 메소드 준비가 호출되지 않습니다.

Storyboard showing the views

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    let selectedCarIndex = self.savedCarsTableVC.indexPathForSelectedRow?.row 

    let destVC = segue.destination as! TabBarController 
    destVC.selectedCar = savedCars[selectedCarIndex!] 
} 

나는 그것이 nil이다 그러나 배열에서 데이터를 반환 할 selectedCar 객체를 기대하고

.

+0

안녕하세요 @ suleee, 귀하의 질문에 직접 코드를 복사하여 붙여 넣으십시오 (그리고 Markdown을 사용하여 포맷하십시오). 당신은 대답 방법이 빠른 사람을 얻을 것이다 ;-) –

답변

0

tableView didSelectRow 메소드에서 selectedCarIndex를 설정하려고합니다. 또한 TabBar에 포함 된 일부 ViewController가 아닌 TabBarController로 이동해야합니다.

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: IndexPath) { 
    self.performSegue(withIdentifier: "youridentifier", sender: indexPath) 
} 

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    let selectedCarIndex = sender as! IndexPath 

    let destVC = segue.destination as! TabBarController //Are you sure this is the correct ViewController to be casting to? 
    destVC.selectedCar = savedCars[selectedCarIndex.row] 
} 
+0

나는 당신이 옳은 것 같아요 : 그는 잘못된 VC 클래스에 캐스팅하고 그 결과로 전환을 중단합니다 :-( –

관련 문제