2016-11-14 4 views
1

In Code, den ich so etwas wie dieses:NSTableView viewFor Table Delegatmethode nicht genannt

let scrollView = NSScrollView() 
let tableView = NSTableView() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do view setup here. 

    tableView.delegate = self 
    tableView.dataSource = self 
    tableView.headerView = nil 

    scrollView.documentView = tableView 
    scrollView.hasVerticalScroller = true 

    self.view.addSubview(scrollView) 

} 

Beide benötigten Methoden (numberOfRows und aus dem Titel) deklariert. TableView ist in der Ansicht sichtbar, scrollbar und wählbar. tableViewSelectionDidChange funktioniert ordnungsgemäß, ich kann Index der ausgewählten Zeile von tableView.selectedRow erhalten. Aber alle Zellen sind leer, weil tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) keine der Zellen aufgerufen hat. Ich denke, das Problem ist, dass TableView nicht herausfinden kann, welche der Zellen gerade jetzt sichtbar sind. Aber ich weiß nicht, was ich damit machen sollte

Antwort

1

Nun, ich kämpfte für einen Moment, aber es wurde schnell klar. Die von Ihnen generierte tableView ist in Ordnung.

Das einzige, was fehlt, ist eine Spalte. Sie können einfach eine Spalte hinzu:

tableView.addTableColumn(NSTableColumn(identifier: "Column")) 

Tabelle Ansichten, ihre Ansichten innerhalb Spalten angezeigt werden soll. Die meisten TableViews haben nur eine Spalte und bei ausgeblendeter Überschrift vergessen wir, dass sie überhaupt existieren.

Ohne irgendeine Spalte funktioniert alles andere noch normal. BackgroundRows load und selection funktioniert - was mich zu dieser Lösung gebracht hat.

+0

Yep, ich habe es, vielen Dank) –

+0

vielleicht können Sie mir mit einer anderen, aber damit verbundenen Frage helfen, http://StackOverflow.com/Questions/40688353/What-Replacement-for-uitableviewautomaticdimension-should- Ich benutze-um-gleich zu bekommen –