我想知道是否有方法在xib文件中創建一個視圖,然後將它的插座連接到一個類,以便您可以創建該類的多個實例並將它們放置在窗口。 我有一些問題,所以你能幫我修復我的代碼嗎?從Nib加載NSView的多個實例
這裏就是我所做的:
首先我創建2個文件:CustomView.xib和CustomView.swift。 然後我設計了添加一個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")
}
所以我去創建的兩個變量該類並將其放置在窗口上:
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類型。
無法將類型'NSApplication'(0x7fffb5cf3ef0)的值轉換爲'NSView'(0x7fffb5d04bb0)。
我認爲是有這個錯誤,因爲有時第一頂層對象是視圖,有時它的窗口。所以我感到困惑。
顯然引發錯誤在這條線:
let view = top[0] as! NSView
所以這裏有什麼問題嗎?
(請不要用可可觸摸代碼回答)? –
你是什麼意思?我剛剛創建了一個View:File> New> File> View。 – Cristian
當我告訴Xcode創建一個接口文件時,它給了我應用程序選項,視圖,空白,故事板....我假設應用程序類型不是你想要的......但它可能是你得到的。 –