후속 조치 this question.UINib을 인스턴스화하려고 할 때 :이 클래스는 키 값을 코딩하는 키 값이 아닙니다.
메인보기에 버튼이 하나있는 앱과 '비어있는'popup.xib 파일 (보기, 버튼 없음, 라벨 없음, 아무 것도 없음)이 있습니다. 버튼을 누르면 팝업이 나타나기를 원합니다. 웬일인지 버튼을 누를 때마다 다음과 같은 오류가 발생합니다.
...이 클래스는 키보기에 대해 키 값을 코딩하지 않습니다. '
나는 NIB의 콘센트가 삭제되었거나 변경 되었기 때문에 모든 개체를 제거한 이유와 빈보기를 표시하는 이유입니다. 하지만 여전히이 오류가 발생합니다.
내 코드 :
ViewController.swift
import UIKit
class ViewController: UIViewController {
@IBAction func showPopup(sender: AnyObject) {
var x = UINib(nibName: "Popup", bundle: nil);
println(x)
var y = x.instantiateWithOwner(nil, options: nil)
println(y)
var z = y[0] as? PopupViewController
println(z)
z!.show(self.view)
}
}
PopupViewController.swift
import UIKit
class PopupViewController : UIViewController {
func show(tView : UIView) {
tView.addSubview(self.view)
self.view.backgroundColor = UIColor.redColor()
}
}
출력 :
<UINib: 0x7ff822412f90>
2015-02-02 15:47:57.870 tttt[5437:179808] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSObject 0x7ff822553ec0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key view.'
*** First throw call stack:
업데이트
업데이트 2
나는 답변과 의견에 따라 물건을 조정 계속, 나는 var y = x.instantiateWithOwner(PopupViewController(), options: nil)
을 할 경우 라인이 OK 실행 얻을 얻었다. 그런 다음 UIViewController가 아닌 UIView가 포함 된 배열을 반환합니다. 따라서 마지막 줄인 z!.show(self.view)
이 충돌합니다. 올바른 바브가 만들어져 변경된 속성 (예 : 알파 값)이 println(y)
의 텍스트 출력에 올바르게 표시됩니다.
이제 제 질문은 : 소유자로 instantiateWithOwner
으로 무엇을 전달해야합니까?
self as owner 매개 변수를 사용하려고 했습니까? –
지금 시도해보십시오. 변수 z는 여전히 nil입니다. –
실제로 y는 여전히 하나의 UIView 중 하나이므로 캐스트가 작동하지 않고 nil이 사용됩니다. –