2017-12-30 31 views
0

Ich portiere eine App auf macOS und ich muss das UITableView mit NSTableView neu implementieren, aber ich renne in einige Probleme, damit es funktioniert.Cocoa: Umwandlung von UITableView in NSTableView?

Mein Layout in iOS ist im Grunde eine scrollbare Liste von Textzellen in einer einzelnen Spalte mit so vielen Zeilen wie in log.count (siehe unten).

Im Interface Builder, nachdem ich die Tabellenansicht zu meiner Hauptansicht hinzugefügt habe, habe ich den Inhaltsmodus auf "zellbasiert" geändert, Spalten auf "1" geändert und "Header" deaktiviert.

Ich habe dann meine ViewController die Protokolle: NSTableViewDelegate & NSTableViewDataSource, legen Sie es als Delegat für beide und dann eine Steckdose für die Tabellenansicht.

Ich hoffe, dass ich nur die NS-Versionen der drei Funktionen neu implementieren müssen:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
UITableView.reloadData() 

als alles andere ist ziemlich einfach.

als Referenz das ist mein iOS-Controller mit einem UITableView Ausgang anzuzeigen:

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 

    @IBOutlet weak var tableView: UITableView! 

    var log = ["Welcome!"] 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return log.count 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "cell") 
     cell.textLabel?.text = log[indexPath.row] 
     return cell 
    } 

    func appendToLog(string: String) { 
     log.append(string) 
     tableView.reloadData() 
    } 

} 

Vielen Dank im Voraus!

+0

Nehmen Sie nicht an und die Hoffnung, lesen Sie [Table View Programmierhandbuch für Mac] (https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/TableView/Introduction/Introduction.html). – Willeke

Antwort

-2
class ViewController: NSViewController, NSTableViewDelegate, NSTableViewDataSource { 

    @IBOutlet weak var tableView: NSTableView! 

    var log = ["Welcome!"] 

    func numberOfRows(in tableView: NSTableView) -> Int { 
     return log.count 
    } 

    func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any? { 
     let cell = NSTextFieldCell(textCell: log[row]) 
     return cell 
    } 

    func appendToLog(string: String) { 
     log.append(string) 
     tableView.reloadData() 
    } 

} 
Verwandte Themen