我对Swift非常陌生,所以我猜这是一个新手的错误,但这是我的情况:
我正在尝试创建一个允许您将内容添加到列表中的应用程序。我有NSTextField
用户输入数据,NSButton
将数据添加到myTeam
数组。 tableView
绑定到myTeam
数组(我认为这就是你所说的)。
当我运行应用程序时,包含预设值myTeam
的表正确填充表视图,但是当我添加到此数组时没有任何反应。经过研究,我找到了this question。
不幸的是,像大多数swift教程和Q& A一样,它适用于iOS。但我想我会尝试一下。我添加了
self.tableView.reloadData()
self.refresher.endRefreshing()
到我的代码,并分别收到两个错误:Value of type '(NSTableView, NSTableColumn?, Int) -> Any?' has no member 'reloadData'
和Value of type 'ViewController' has no member 'refresher'
。
下面是我的代码:
import Cocoa
import Darwin
class ViewController: NSViewController, NSTableViewDataSource {
var myTeam = ["Test", "Test2"]
@IBOutlet weak var myText: NSTextField!
@IBOutlet weak var AddMember: NSButton!
@IBAction func addmem(_ sender: Any) {
myTeam.append(myText.stringValue);
self.tableView.reloadData()
self.refresher.endRefreshing()
}
override func viewDidLoad() {
super.viewDidLoad()
}
override var representedObject: Any? {
didSet {
// Update the view, if already loaded.
}
}
// MARK: DataSource
func numberOfRows(in tableView: NSTableView) -> Int {
return myTeam.count
}
func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any? {
return myTeam[row]
}
}
P.S。我使用this教程来尽我所能。
答案 0 :(得分:1)
最简单的解决方案,我们将使用(完整)Cocoa Bindings:
用
替换整个代码import Cocoa
class ViewController: NSViewController {
@IBOutlet weak var myText: NSTextField!
@objc dynamic var myTeam = ["Test", "Test2"]
@IBAction func addmem(_ sender: NSButton) {
myTeam.append(myText.stringValue)
}
}
在Interface Builder中选择表格视图(不是封闭的滚动视图),然后按⌥⌘6(Connections Inspector)
dataSource
ViewController
> 模型关键路径 myTeam
由于您仍在使用objectValueFor
,我假设表格单元格视图的值已绑定到objectValue
。
macOS不知道复习。