由于某种原因,当我将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
}
}
答案 0 :(得分:0)
您需要实现 NSTableViewDataSource,NSTableViewDelegate 协议,以告知该表是从其他表获取数据的类
tableView.dataSource = self
tableView.delegate = self
将无法工作,则无需使用应用程序委托