【问题标题】:2 NSTableViews 1 ViewController. Cells in second tableview not appending data to rows2 个 NSTableViews 1 个视图控制器。第二个表格视图中的单元格未将数据附加到行
【发布时间】:2019-04-17 14:04:57
【问题描述】:

第二个表格视图单元格正在填充“表格视图单元格” 即使填充了 inActiveComputers 数组。

tableView1 已成功填充 activeComputers 数组。两个表都通过 IB 将数据源、委托和引用出口设置为 MainView。

我不知道下一步该尝试什么!


  @IBOutlet weak var tableView1: NSTableView!
    @IBOutlet weak var tableView2: NSTableView!

 func numberOfRows(in tableView: NSTableView) -> Int {
        if(tableView == self.tableView1){
            return activeComputers.count
        }
        else if(tableView == self.tableView2){
            return inActiveComputers.count
        }
        return 0
    }
    func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
        var result = NSTableCellView()
        if(tableView == self.tableView1)
        {

            result = tableView.makeView(withIdentifier: (tableColumn?.identifier)!, owner: self) as! NSTableCellView
            result.textField?.stringValue = activeComputers[row][(tableColumn?.identifier.rawValue)!]!
            return result
        }

     else if(tableView == self.tableView2)
        {

            result = tableView.makeView(withIdentifier: (tableColumn?.identifier)!, owner: self) as! NSTableCellView
            result.textField?.stringValue = inActiveComputers[row][(tableColumn?.identifier.rawValue)!]!
            return result
        }
        return nil
    }

我也试过这个...

 func numberOfRows(in tableView: NSTableView) -> Int {
       if tableView == tableView1 {
        return activeComputers.count
       } else { return deadComputers.count}

    }
    func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
        var result = NSTableCellView()
        result = tableView.makeView(withIdentifier: (tableColumn?.identifier)!, owner: self) as! NSTableCellView
        if tableView == tableView1 {
            result.textField?.stringValue = activeComputers[row][(tableColumn?.identifier.rawValue)!]!

        } else {

            result.textField?.stringValue = deadComputers[row][(tableColumn?.identifier.rawValue)!]!

        }
        return result
    }

我在} else { 上设置了一个断点 tableView 函数中 else 中的内容会被直接跳过。我觉得这种方法无法实现我想要实现的目标!?

【问题讨论】:

  • 你设置断点和检查值了吗?
  • 您是否将第二个表格视图委托设置为控制器?
  • 能否请您检查func numberOfRows(in tableView: NSTableView) -> Int 方法中的返回编号并告诉我结论,“在条件中放置打印方法或放置前点进行测试”
  • 我在result.textField?.stringValue = activeComputers[row][(tableColumn?.identifier.rawValue)!]! 上设置了一个断点,我注意到它进入了activeComputers 数组,而result.textField?.stringValue = inActiveComputers[row][(tableColumn?.identifier.rawValue)!]! 从未访问过inActiveComputers 数组...
  • mohsen,返回的数字好像还可以。

标签: swift nstableview


【解决方案1】:

感谢您的提示

我需要为第二个表的嵌套文本字段设置引用插座。我在第一张桌子上有这套,但在第二张桌子上忘记了。 我现在能够将每个数组解析为每个表。 (见下图)

Table Cell View: Referencing Outlets

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多