【问题标题】:Programatically created NSTableView column widths do not line up with header以编程方式创建 NSTableView 列宽不与标题对齐
【发布时间】:2014-07-12 21:40:00
【问题描述】:

我有一个以编程方式创建的 NSTableView,我正在向其中添加新列:

func createColumnsOnTable(table : NSTableView, columnNames: String[], hideColumns: String[])
{
    for columnNum in 0 .. 2
    {
        let columnName = columnNames[columnNum]
        var newTableColumn = NSTableColumn()
        var newHeaderCell = NSTableHeaderCell()
        newTableColumn.setHeaderCell(newHeaderCell)
        newTableColumn.setIdentifier(columnName.lowercaseString)

        newHeaderCell.setTitle(columnName)
        newTableColumn.setEditable(true)
        newTableColumn.sizeToFit()
        newTableColumn.setResizingMask(NSTableColumnUserResizingMask)
        //newHeaderCell.drawSortIndicatorWithFrame(table.headerView().frame(), inView: table.headerView(), ascending: true, priority: 0)

        if isInSet(columnName, valueArray: hideColumns)
        {
            newTableColumn.setHidden(true)
        }
        var sortDescriptor = NSSortDescriptor(key: newTableColumn.identifier(), ascending: true, selector: "compare")
        newTableColumn.setSortDescriptorPrototype(sortDescriptor)
        table.addTableColumn(newTableColumn)
    }
}

我的问题是新列显示正常并且看起来不错,但垂直网格线未与标题中的分隔线对齐。此外,随着分隔线被拖动以使列更宽,列变得更宽,但对齐变得更加倾斜。我不确定如何让它们在调整列大小时保持对齐,或者如何让它们开始对齐。当我使用在 IB 中创建的 tableview 时,我没有这个问题,所以我知道我遗漏了一些东西,但就是找不到。

感谢您提供的任何帮助。

【问题讨论】:

    标签: swift nstableview


    【解决方案1】:

    我发现了原因。当试图弄清楚为什么我没有滚动条时,我在包含 tableView 的 scrollView 的 contentView 上添加了一个 setBoundsSize 设置。一旦我摆脱了那条线,一切都开始表现正常。以防万一其他人遇到这个问题(尽管不太可能),我删除的行是:

    newScrollView.contentView().setBoundsSize(newScrollView.bounds().size)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-03
      • 1970-01-01
      • 2013-10-08
      • 1970-01-01
      • 2016-04-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多