2017-02-27 4 views
0

실행시 nib 이름과 같이보기 컨트롤러를 만들고 싶습니다. 하지만 충돌이 발생합니다.xib를 사용하여 런타임에보기 컨트롤러 만들기

오류

[setValue의 : forUndefinedKey :] :이 클래스는 키 imageViewApp 대한 코딩 호환 키 값이 없다.

let vc = UIViewController(nibName: nibName, bundle: nil) 

나는이

let vc = MyViewController(nibName: "MyViewController", bundle: nil) 같은 정적 값으로 시도

, 그것은 노력하고 있습니다.

은 내가 봤지만 충분한 해결책이 나에게 해결책을 알려 주시기 바랍니다 발견하지 않았습니다 MyViewController

에서 함께 IBOutlet

입니다.

+0

충돌 이유를 말씀해주십시오. –

+0

이 오류가 발생합니다. '[ setValue : forUndefinedKey :] :이 클래스는 키 imageViewApp의 코드 값을 코딩하는 키 값이 아닙니다.' 이것은 MyViewController의 IBOutlet입니다. –

+0

실제로 UIViewController를 사용하고 있지만 클래스 이름은 MyViewController입니다. 이는 xcode가 'UIViewController' 유형의 객체를 요구하지만 당신은'MyViewController' 유형의 객체를 가지고 있음을 의미합니다. –

답변

1

제거 imageViewApp 재산 함께 IBOutlet 컨트롤러를보고 ImageView에 태그를 지정하고 태그로 액세스하십시오.

+0

당신이 맞을지도 모르지만 20 개 이상의 속성이 있다면 그 태그를 통해 모두 액세스해야합니다.이 태그가 유용하지는 않습니다. –

+0

예, 유용하지 않지만 런타임에 ViewController를 생성해야하므로 IBOutlet을 할당 할 수 없으므로 태그 이외의 다른 속성에 액세스 할 수있는 다른 방법은 없습니다. –

2

UIViewController를 초기화하고 UIViewController에 imageViewApp 속성이 없습니다. 두 번째 예제에서와 같이 해당 속성을 정의하는 고유 한 하위 클래스를 초기화해야합니다. 이 같은

시도 뭔가 : 당신의 펜촉 파일이 클래스와 동일한 이름을 가진 경우가없는

let vc = MyViewController(nibName: nibName, bundle: nil) 

그것을 지정하려면 것과

let vc = MyViewController(nibName: nil, bundle: nil) 
+0

내가 언급했듯이 그것은 작동하지만,보기 컨트롤러가 모든 유형의 수 있도록 런타임을 만들고 싶습니다. –

+0

@GopalDevra 어쩌면 당신은 NSClassFromString을 찾고 있습니까? 네가 성취하려는 것을 확신하지 못한다. – DrummerB

+0

네, 저의 목표는 클래스에서 (xib과 함께) 클래스를 이름으로 런타임에 가져 오는 것입니다. 또는 xib 파일 이름을 사용할 수도 있습니다. –