以编程方式创建的NSTableView列宽不与标题对齐

时间:2014-07-11 18:33:54

标签: swift nstableview

我有一个以编程方式创建的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时,我没有遇到这个问题所以我知道我错过了一些东西,但却无法找到答案。

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

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

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