Я не могу заполнить быстрое табличное представление на основе ячеек в macOS 10.14.6, используя Xcode 11.2 XIB. Приложение основано на документе, а tableView создается с отдельным Xib WindowController. Подобный проект, созданный программно в XCode, работает нормально, включая перетаскивание; Я относительно новичок в использовании XIBS и, вероятно, не все правильно. Идентификатор столбца был установлен в xib, а NSTableViewDataSource и NSTableViewDelegate были добавлены в контроллер окна. Далее следует соответствующий исходный код, и полный проект Xcode можно загрузить здесь: https://www.dropbox.com/s/6tsb98b7iihhfxl/tableView.zip?dl=0
Любая помощь в получении tableView, заполненного массивом String, будет принята с благодарностью. Я также хотел бы, чтобы работало перетаскивание, но пока можно просто получить элементы массива, которые будут отображаться в табличном представлении. Он правильно создает четыре строки, соответствующие количеству элементов в массиве, но видимого текста нет. TableView основан на ячейках, но я мог бы использовать view, если это будет работать лучше. Заранее спасибо.
class WindowController: NSWindowController, NSTableViewDataSource, NSTableViewDelegate {
@IBOutlet var tableView: NSTableView!
var sports : [String] = ["Basketball","Baseball","Football","Tennis"]
override func windowDidLoad() {
super.windowDidLoad()
tableView.registerForDraggedTypes([NSPasteboard.PasteboardType.fileURL])
tableView.dataSource = self
tableView.delegate = self
}
func numberOfRows(in tableView: NSTableView) -> Int {
return (sports.count)
}
func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any? {
var value : Any? = 0
let columnIdentifier : String = (tableColumn?.identifier.rawValue)!
if (columnIdentifier == "Col1"){
value = sports[row]
}
return value
}