【问题标题】:Swift: Unable to add NSTableHeaderCell to NSTableViewSwift:无法将 NSTableHeaderCell 添加到 NSTableView
【发布时间】:2015-02-24 19:25:44
【问题描述】:

所以我正在以编程方式绘制一个 NSTableView,但是,我无法绘制标题。有什么想法吗?

let tableContainer: NSScrollView = NSScrollView(frame: NSMakeRect(20, 50, 380, 200))
let tableView: NSTableView = NSTableView(frame: NSMakeRect(0, 0, 364, 200))
let tableViewHeader: NSTableHeaderView = NSTableHeaderView(frame: NSMakeRect(0, 0, 364, 20))

let header1: NSTableHeaderCell = NSTableHeaderCell(textCell: "H1")
let header2: NSTableHeaderCell = NSTableHeaderCell(textCell: "H2")

let col1: NSTableColumn = NSTableColumn(identifier: "col1")
let col2: NSTableColumn = NSTableColumn(identifier: "col2")
col1.width = 200
col2.width = 200
col1.headerCell = header1

tableView.headerView = tableViewHeader
tableView.addTableColumn(col1)
tableView.addTableColumn(col2)

tableView.setDelegate(self)
tableView.setDataSource(self)
tableView.reloadData()

tableContainer.addSubview(tableView)
tableContainer.hasVerticalScroller = true

self.view.addSubview(tableContainer)

【问题讨论】:

    标签: swift nstableview nstableheaderview nstableheadercell


    【解决方案1】:

    您可以使用包含表头和内容的 NSClipView ,然后将 NSClipView 添加到 NSScrollview 作为在 xib 上创建 tableview。

    或者它不需要添加NSClipView。重点是 addSubview 不仅有 tableview,还有 tableheaderview。

    let tableScrollView = NSScrollView(frame: NSMakeRect(0, 0, 300, 430))
    let tableHeaderView: NSTableHeaderView = NSTableHeaderView(frame: NSMakeRect(0, 0, 300, 17))
    let tableView = NSTableView(frame: NSMakeRect(0, 0, 300, 430))
    
    self.col1.headerCell = header1
    self.col2.headerCell = header2
    self.col1.width = 130
    self.col2.width = 200
    
    self.tableView.headerView = tableHeaderView
    self.tableView.allowsMultipleSelection = true
    self.tableView.usesAlternatingRowBackgroundColors = true
    
    self.tableView.addTableColumn(col1)
    self.tableView.addTableColumn(col2)
    
    self.tableView.focusRingType = NSFocusRingType.None
    self.tableView.autoresizesSubviews = true
    self.tableView.setDelegate(self)
    self.tableView.setDataSource(self)
    self.tableView.reloadData()
    
    self.tableScrollView.addSubview(tableView)
    self.tableScrollView.addSubview(tableHeaderView)
    
    self.tableScrollView.documentView = tableView
    self.tableScrollView.hasVerticalScroller = true
    self.tableScrollView.borderType = NSBorderType.BezelBorder
    
    
    self.view.addSubview(tableScrollView)
    

    【讨论】:

      猜你喜欢
      • 2016-09-03
      • 2019-08-07
      • 2016-06-19
      • 1970-01-01
      • 2015-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多