Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift NSTableView没有';在ViewController中无法工作_Swift_Macos - Fatal编程技术网

Swift NSTableView没有';在ViewController中无法工作

Swift NSTableView没有';在ViewController中无法工作,swift,macos,Swift,Macos,出于某种原因,当我将我的NSTableView代码放在ViewController中时,没有任何单元格出现,但如果我将代码放在AppDelegate中,一切都会很好 你知道为什么会这样吗?如果有帮助的话,我正在使用.xib文件 class ViewController: NSViewController{ var delegate: AppDelegate? = nil @IBOutlet weak var tableView: NSTableView! overri

出于某种原因,当我将我的
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
    }
}

您需要实现NSTableViewDataSource、NSTableViewDelegate的

 tableView.dataSource = self
tableView.delegate = self

不起作用,那么你就不需要在没有看到任何代码的情况下使用app delegate了。@JoakimDanielson好的,我为我的ViewController添加了代码。我还应该添加委托代码吗?作为一般规则,我认为您应该避免在
AppDelegate
类中包含数据源(
FlightList
)或任何类似的应用程序数据。哪个对象是xib中表视图的委托和数据源?如何实例化视图控制器?