Мне было интересно, был ли метод создания представления в файле xib, а затем подключить его выходы к классу, чтобы вы могли создавать несколько экземпляров этого класса и размещать их в окно. У меня есть некоторые проблемы, так что вы можете помочь мне исправить свой код?Загрузка нескольких экземпляров NSView из Nib
Вот что я сделал:
Во-первых, я создал 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 щей меня странная ошибка. Он работал в первый раз с одной переменной, но если я помещаю более одного, он говорит, что не может использовать NSWindow-тип в NSView.
Не удалось бросить значение типа 'NSApplication' (0x7fffb5cf3ef0) к 'NSView' (0x7fffb5d04bb0).
Я думаю, что эта ошибка дается, потому что иногда первый объект верхнего уровня является точка зрения, а иногда это окно. Поэтому я смущаюсь.
Очевидно, что ошибка возникает на этой линии:
let view = top[0] as! NSView
Так что же здесь проблема?
(Пожалуйста, не отвечайте с какао кодом сенсорным)
При создании файла .xib, какой стиль XIb вы выбрали? –
Что это значит? Я просто создал вид: Файл> Создать> Файл> Вид. – Cristian
Когда я говорю Xcode для создания файла интерфейса, он дает мне варианты приложения, представления, пустого, раскадровки .... Я предполагаю, что тип приложения не тот, который вы хотите ... но это может быть то, что вы получили. –