2017-01-03 3 views
0

segue의 대상보기 컨트롤러에 데이터를 전달하기 위해 prepare (forSegue) 메서드를 사용하면 대상 VC의 모든 구성원이 nil입니다. 따라서 이러한 멤버에 액세스하려고하면 프로그램이 중단됩니다. 소스 뷰 컨트롤러에서Swift 3 : Segue의 대상보기 컨트롤러에서 nil 값만

내 코드 :

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    if segue.identifier == "Second2DetailEdit"{ 
     var detailVC = segue.destination as! DrinkDetailViewController 
     detailVC.headerLabel.text = "Edit Drink" 

    } 
    //... 
} 

벤처 캐피탈 자체가 전무 없습니다. VC의 모든 구성원 만 내가 뭔가 잊었 니? 이것은 새로운 Swift 3 프로젝트에서만 발생합니다. Swift 2 프로젝트의 비슷한 코드는 문제가 없습니다. 미리 감사드립니다.

답변

1

목적지보기 컨트롤러의보기가 아직 생성되지 않았으므로 모든 IBOutlet이 nil입니다. 문자열 및 대상의 ViewDidLoad와 같은 일반 속성에서 필요한 정보를 보내보고보기를 업데이트하십시오.

0

내가 안전하게 detailVC보다는 힘 풀기를 풀기 제안 ...

if segue.identifier == "Second2DetailEdit" { 
    if let detailVC = segue.destination as? DrinkDetailViewController { 
     detailVC.headerLabel.text = "Edit Drink" 
    } 
} 

당신은 쉽게 시간 destinationVC에 속성을 설정 오히려 UILabel를 통해 수행하는 것보다 사람들에게 정보 전달을해야합니다 s ...

1

이 문제를 해결하는 가장 좋은 방법은 두 번째보기 컨트롤러에서 변수를 만들고 그 대신에 텍스트를 설정하는 것입니다.

그런 다음 vC가 초기화되면 headerLabel.text를 새 변수 viewDidLoad

에 설정할 수 있습니다