swift - 向 NSTableView 添加行时数组索引超出范围
问题描述
我正在尝试创建一个硬币翻转模拟,它将在 NSTableView 中记录每次硬币翻转的结果。但是,当我插入一个包含掷硬币结果的新行时,Fatal error: Array index out of range
尽管它试图插入的索引为 0,但我得到了一个。这是我的视图控制器类的一部分:
class CoinController: NSViewController {
@IBOutlet weak var shownImage: NSImageView!
@IBOutlet weak var shownText: NSTextField!
@IBOutlet weak var coinSelected: NSPopUpButton!
@IBOutlet weak var tableView: NSTableView!
@objc dynamic var values: [String] = []
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func flipCoin(_ sender: Any) {
let transition = CATransition()
transition.type = CATransitionType.moveIn
let rand = Bool.random()
let currentCoin = coinSelected.titleOfSelectedItem ?? ""
if rand == true {
self.shownImage.image = NSImage(named:currentCoin+"Heads")
values.append("Heads")
} else {
self.shownImage.image = NSImage(named:currentCoin+"Tails")
values.append("Tails")
}
self.shownImage.layer?.add(transition, forKey: "transition")
let last = values.count-1
tableView.insertRows(at: [last], withAnimation: .slideDown)
tableView.reloadData(forRowIndexes: [last], columnIndexes: IndexSet(integersIn: 0..<1))
tableView.scrollRowToVisible(last)
tableView.selectRowIndexes([last], byExtendingSelection: false)
}
这是我的绑定:
解决方案
推荐阅读
- angular - 如何在 Angular 中重置所有动态创建的多选(PrimeNG)?
- javascript - 如何在使用 jquery 上传多个文件之前将单个 id 放在图像预览中
- css - 如何在 React Native 中以设备的整个宽度显示特定的多字符文本?
- ios - SwiftUI VideoPlayer 关闭整个根视图
- python-3.x - Odoo 13:通过 api 从 odoo 中的采购订单创建发票
- django - 如何从 Django 视图中分配组中的用户?
- ios - SwiftEntryKit 在存在线程 1 时返回错误:EXC_BAD_ACCESS (code=1, address=0x1e0)
- java - Intellij throwing error 新创建的恶魔进程具有与预期不同的上下文。java home 不一样
- opencv - 我无法在 pycharm 中安装 opencv?
- javascript - ReactJS,在另一个模态之上显示模态