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中表视图的委托和数据源?如何实例化视图控制器?