向NSTableView添加行时,数组索引超出范围。

问题描述 投票:0回答:1

我试图创建一个抛硬币模拟,将记录NSTableView中每次抛硬币的结果。然而,当我去插入一条包含抛硬币结果的新记录时,我得到了一个 Fatal error: Array index out of range 这是我的视图控制器类的一部分。

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)
    }

这里是我的绑定

enter image description hereenter image description here

enter image description here

swift xcode cocoa nstableview cocoa-bindings
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.