Я новичок в Swift и борюсь с NSTableView!Я пытаюсь создать пользовательский NSTableCellView из NIB.
Я хочу загрузить ячейку из NIB, потому что: - она будет многократно использоваться в нескольких столбцах и нескольких табличных представлениях - она будет визуально и функционально сложной (относительно) - она, вероятно, будет развиваться в процессе разработки
Я могу загрузить ячейку в табличном представлении, но при попытке заполнить представление я получаю сообщение об ошибке «Не удалось подключить выход из ... отсутствует сеттер или переменная экземпляра» в области отладкис данными.Пользовательская ячейка видна в табличном представлении, но, кажется, не создается.
Я искал решение в Интернете часами!Помогите, что мне не хватает?
Это мой TableViewController ...
protocol TableViewDelegate {
func itemWithIndexWasSelected(value: Int)
}
class TableViewController: NSViewController {
@IBOutlet weak var tableView: NSTableView!
let tableViewData =
[ [ "Column1": "John", "Column2": "Smith", "Hobby": "Birds"],
[ "Column1": "Jane", "Column2": "Doe", "Hobby": "Fish"],
[ "Column1": "Hal", "Column2": "Bernard", "Hobby": "Trees"],
[ "Column1": "Harry", "Column2": "Bell", "Hobby": "Rocks"] ]
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
let customCellNib = NSNib.init(nibNamed: "CustomTableCellView", bundle: nil)
tableView.register(customCellNib, forIdentifier: NSUserInterfaceItemIdentifier("CustomCellView"))
tableView.reloadData()
}
}
extension TableViewController: NSTableViewDataSource, NSTableViewDelegate {
func numberOfRows(in tableView: NSTableView) -> Int {
return tableViewData.count
}
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
if tableColumn?.identifier.rawValue == "CustomCell" {
let result: CustomTableCellView = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier("CustomCellView"), owner: self) as! CustomTableCellView
result.hobbyLabel?.stringValue = tableViewData[row]["Hobby"]!
result.hobbyButton?.title = "TESTTITLE"
return result
}
else {
let result = tableView.makeView(withIdentifier:(tableColumn?.identifier)!, owner: self) as! NSTableCellView
result.textField?.stringValue = tableViewData[row][(tableColumn?.identifier.rawValue)!]!
return result
}
}
}
У меня CustomTableCellView с XIB с тем же именем ...
class CustomTableCellView: NSTableCellView {
@IBOutlet weak var hobbyButton: NSButton!
@IBOutlet weak var hobbyLabel: NSTextField!
}
У меня есть тестовый проект, который я могу отправить или загрузить ... помощь будет высоко оценена!
Это то, что я вижу.Я думал, что я был близко ... часов назад!