NSTableView не работает, когда в ViewController - PullRequest
0 голосов
/ 20 февраля 2019

По какой-то причине, когда я помещаю свой код для моего NSTableView в ViewController, ни одна из ячеек не появляется, но если я помещаю код в AppDelegate, все отлично работает.

Есть идеи, почему это происходит?Я работаю с файлом .xib, если это вообще помогает.

class ViewController: NSViewController{
    var delegate: AppDelegate? = nil

    @IBOutlet weak var tableView: NSTableView!

    override func viewDidLoad() {
        super.viewDidLoad()
        delegate = NSApplication.shared.delegate as? AppDelegate
        tableView.dataSource = self
        tableView.delegate = self
    }
}

extension ViewController: NSTableViewDataSource{    
    func numberOfRows(in tableView: NSTableView) -> Int {
        print(delegate?.FlightList.count ?? 0)
        return delegate?.FlightList.count ?? 0
    }
}

extension ViewController: NSTableViewDelegate{
    func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {

        var text: String = ""
        var cellIdentifier: String = ""


        guard let item = delegate?.FlightList[row] else {
            return nil
        }


        if tableColumn == tableView.tableColumns[0] {
            text = item.flightName
            cellIdentifier = "flightID"
        }

        if let cell = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(cellIdentifier), owner: nil) as? NSTableCellView {
            cell.textField?.stringValue = text
            return cell
        }
        return nil
    }
}

1 Ответ

0 голосов
/ 20 февраля 2019

вам нужно реализовать протоколы NSTableViewDataSource, NSTableViewDelegate , чтобы сообщить таблице, что это класс, из которого он получает данные, иначе

 tableView.dataSource = self
tableView.delegate = self

не будет работать, и тогда вам не нужно будет использоватьделегат приложения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...