首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >swift中NSTableView中的NSColorWell

swift中NSTableView中的NSColorWell
EN

Stack Overflow用户
提问于 2017-11-30 04:35:49
回答 2查看 427关注 0票数 1

有没有人有什么好的建议,可以把NSColorWell集成到NSTableView中?大多数其他小部件都工作得很好,因为它们都是基于单元格的,但NSColorWell没有相应的NSColorWellCell。

EN

回答 2

Stack Overflow用户

发布于 2017-12-01 20:02:02

在基于视图的表视图中,最方便的解决方案是Cocoa绑定。您可以很好地将颜色的value绑定到模型的NSColor实例。

如果不使用Cocoa绑定,则在目标视图控制器中创建一个IBAction方法

代码语言:javascript
复制
@IBAction func colorDidChange(_ sender: NSColorWell)
{
    let row = tableView.row(for: sender)
    let column = tableView.column(for: sender)
    print(row, column, sender.color)
}

在Interface Builder控件中,从颜色井拖动到视图控制器并连接操作。该操作将打印rowcolumn和新颜色。tableViewNSTableView插座。

如果在同一视图中有多个色井,则可以指定不同的标签来区分色井

票数 0
EN

Stack Overflow用户

发布于 2017-12-02 14:13:52

我在没有绑定Cocoa的情况下解决了我的问题我更新了视图,通过升级NSTableCellView (最后3行)在真实的程序中一切正常,这是一个记帐的程序。在表视图和大纲视图之间有太多的关系,过滤器让我通过绑定重新做了很多工作

谢谢你的帮忙

代码语言:javascript
复制
class ColorsController:  NSWindowController  {

@IBOutlet var colorTable: NSTableView!

let tableViewData =
    [["firstName":"John","lastName":"Doe","emailId":"john.doe@mail.com"],
     ["firstName":"Jane","lastName":"Doe","emailId":"jane.doe@mail.com"]]

var color = [NSColor.red, NSColor.blue]

override func windowDidLoad() {
    super.windowDidLoad()
    self.colorTable.reloadData()
}

@IBAction func actionColorWell(_ sender: NSColorWell) {

    let row = colorTable.row(for: sender as NSView)
    color[row] =  sender.color
    colorTable.reloadData()
    let select1 : IndexSet = [row]
    colorTable.selectRowIndexes(select1, byExtendingSelection: false)
    }
}

extension ColorsController : NSTableViewDataSource, NSTableViewDelegate{
func numberOfRows(in tableView: NSTableView) -> Int {
    return tableViewData.count
}

func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView?{

    let identifier = (tableColumn?.identifier)!
    switch identifier.rawValue {
    case "firstName" :
        let  result  = tableView.makeView(withIdentifier: identifier, owner: self) as! NSTableCellView
        result.textField?.stringValue = tableViewData[row][(tableColumn?.identifier.rawValue)!]!
        result.textField?.textColor = color[row]
        return result

    case "lastName" :
        let  result  = tableView.makeView(withIdentifier: identifier, owner: self) as! NSTableCellView
        result.textField?.stringValue = tableViewData[row][(tableColumn?.identifier.rawValue)!]!
        result.textField?.textColor = color[row]
        return result

    case "emailId" :
        let  result  = tableView.makeView(withIdentifier: identifier, owner: self) as! KSDataCellView
        result.textField?.stringValue = tableViewData[row][(tableColumn?.identifier.rawValue)!]!
        result.textField?.textColor = color[row]
        result.colorWell.color = color[row]
        return result

    case "color" :
        let result = tableView.makeView(withIdentifier: identifier, owner: self) as! NSColorWell
        result.color = color[row]
        return result

    default:
        return nil
    }
}
}

class KSDataCellView: NSTableCellView {

    @IBOutlet weak var colorWell:NSColorWell!
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47561382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档