xibファイルにビューを作成してそのアウトレットをクラスに接続する方法があるのだろうかと思っていたので、そのクラスのインスタンスを複数作成して窓。 私はいくつかの問題を抱えています。私のコードを修正する手助けはできますか?ここでNibからNSViewの複数のインスタンスをロードする
は、私がやったことだ:CustomView.xibとCustomView.swift:
まず、私は2つのファイルを作成しました。 次に、NSImageViewをカスタムビューに追加するためのインターフェイスを設計しました。私はファイルの所有者をクラス名に設定し、NSImageViewのコンセントをクラスに追加しました。
その後、私はペン先からインタフェースをロードするには、次の関数を作成:
func loadView() -> NSView {
var top = NSArray()
Bundle.main.loadNibNamed("CustomView", owner: self, topLevelObjects: &top)
let view = top[0] as! NSView
return view
}
とインタフェースをロードするためのクラスを設定します。
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")
}
だから私はの2つの変数を作成する上で行ってきましたそのクラスをウィンドウに配置する:
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私には奇妙なエラーがあります。 1つの変数では初めてのことでしたが、複数の変数を配置すると、NSViewでNSWindow型をキャストできないというメッセージが表示されます。
'NSApplication'(0x7fffb5cf3ef0)の値を 'NSView'(0x7fffb5d04bb0)にキャストできませんでした。
私は時々、最初のトップレベルのオブジェクトが表示され、そして時にはそれが窓だから、このエラーが与えられていると思います。だから私は混乱してきている。
は明らかにエラーがこの行にスローされます。
let view = top[0] as! NSView
だからここでの問題は何でしょうか。
を取得するために
filter
機能を使用します(ココアタッチコードで応答しないでください)? –どういう意味ですか?私は、View:File> New> File> Viewを作成しました。 – Cristian
インターフェイスファイルを作成するようにXcodeに指示すると、アプリケーション、ビュー、空、ストーリーボードのオプションが与えられます。アプリケーションタイプはあなたが望むものではないと思います...しかし、あなたが持っているものかもしれません。 –