0
xib 파일에서 뷰를 생성 한 다음 해당 아웃렛을 클래스에 연결하는 방법이 있는지 궁금해했습니다. 따라서 해당 클래스의 인스턴스를 여러 개 작성하여 창문. 몇 가지 문제가 있으므로 코드 수정을 도와 줄 수 있습니까?Nib에서 NSView의 다중 인스턴스로드하기
는 여기에 내가했던 일이야 : CustomView.xib 및 CustomView.swift :
는 첫째로 나는이 개 파일을 만들었습니다. 그런 다음 NSImageView를 사용자 정의보기에 추가하는 인터페이스를 설계했습니다. 파일의 소유자를 클래스 이름으로 설정하고 NSImageView의 콘센트를 클래스에 추가했습니다.override init(frame: CGRect) {
super.init(frame: frame)
let view = loadView()
view.frame = bounds
addSubview(view)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
그래서 내가 두 변수를 만드는 방법에 갔다 : 인터페이스를로드
func loadView() -> NSView {
var top = NSArray()
Bundle.main.loadNibNamed("CustomView", owner: self, topLevelObjects: &top)
let view = top[0] as! NSView
return view
}
그리고 클래스를 설정 :
는 다음 나는 펜촉에서 인터페이스를로드하기 위해 다음과 같은 기능을 만들어 그 수업을 창문에 올려 놓으세요 :var x = CustomView(frame: CGRect(x: 0, y: 0, width: 600, height: 105))
var y = CustomView(frame: CGRect(x: 0, y: 105, width: 600, height: 105))
그리고 어떤 이유로이 코드 g 이상한 오류가 있습니다. 하나의 변수로 처음으로 작동했지만, 둘 이상을 배치하면 NSView에서 NSWindow 유형을 변환 할 수 없다고 말합니다.
은 'NSView의'(0x7fffb5d04bb0)에 유형의 가치 'NSApplication'(0x7fffb5cf3ef0)를 캐스팅 할 수 없습니다.
은 가끔 최초의 최상위 개체가보기 때문에이 오류가 주어 있다고 생각하고, 때때로 창입니다. 그래서 나는 혼란스러워진다.
let view = top[0] as! NSView
그래서 문제가 여기에 무엇 :
은 분명히 오류가이 라인에 발생합니다?
를 얻기 위해
filter
기능을 사용하여 (코코아 터치 코드에 응답하지 마십시오)? –무슨 소리 야? 방금보기를 만들었습니다 : 파일> 새로 만들기> 파일>보기. – Cristian
Xcode에서 인터페이스 파일을 만들라고 말하면 응용 프로그램,보기, 비어있는, 스토리 보드의 옵션을 제공합니다 ... 응용 프로그램 유형이 원하는 것이 아니라고 가정합니다. –