swift - 更新绑定到数组错误的tableview
问题描述
我对 Swift 非常陌生,所以我猜这是一个新手错误,但这是我的情况:
我正在尝试创建一个允许您将内容添加到列表的应用程序。我有一个NSTextField
用户在那里输入数据的地方,以及一个NSButton
将该数据添加到myTeam
数组中的地方。被tableView
绑定(我认为这就是你所说的)到myTeam
数组。
当我运行应用程序时,包含正确填充表视图的预设值myTeam
的表,但是当我添加到该数组时,没有任何反应。经过研究,我发现了这个问题。
不幸的是,就像大多数快速教程和问答一样,它是针对 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]
}
}
PS我使用本教程来达到我所做的一切。
解决方案
最简单的解决方案,我们将使用(完整的)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(连接检查器)
- 断开
dataSource
- 断开
- 按⌥⌘7(装订检查员)
- 将内容绑定到
ViewController
>模型键路径myTeam
- 将内容绑定到
由于您仍在使用objectValueFor
我假设表格单元格视图的值已经绑定到objectValue
.
macOS 不知道复习。
推荐阅读
- typescript - Sequelize Typescript on delete cascade throwing errors
- cloudflare - 使用 cloudflare 将请求路由到不同的 Web 应用程序
- java - @Autowired vs @Autowired with Setter
- node.js - Angular 6 - 删除 node_module 包并将其用于本地项目更改
- python-2.7 - 为什么由 PIL draw.text() 图像制成的数组不能在 Matplotlib 中正确显示?
- java - 为什么这里需要“while (rs.next())”?
- fullcalendar - 尝试在没有日历的元素上调用 FullCalendar 方法
- python - 在 Python 中检查数据时避免嵌套循环
- mysql - 哪个权限需要 mysql 用户才能将 EXECUTE 权限授予其他用户?
- python - PyCharm 更新,现在每个脚本都在 Python 控制台中执行