NSTableView中的NSTextField截断日期

时间:2015-09-24 12:02:08

标签: macos swift nsdateformatter nstableview nstextfield

我有一个NSTableView(视图类型,而不是Cell类型),它会生成带有" ..."的文本。在末尾。当我调整列的大小时," ..."不会消失,表明尺寸正在其他地方设定......但我不知道在哪里。

这是表格的样子: enter image description here

当我把它做大时,文字仍然被截断:

enter image description here

如果我拿出" .ByClipping",我明白了:

enter image description here

以下是制作单元格的代码:

func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView? {
    let identifier = tableColumn!.identifier
    let networkName = displayedNetworks[row]
    let networkVals = model.networks[networkName]!
    if let val: AnyObject = networkVals[identifier]  {
        var obj = tableView.makeViewWithIdentifier(identifier, owner:self)
        if (obj==nil) {
            // No existing cell to reuse, so make a new one
            obj = NSTableCellView(frame:NSMakeRect(0,0,400,400))
            obj!.identifier = identifier
        }
        let cellView = obj as! NSTableCellView
        if let d = val as? NSDate {
            let formatter = NSDateFormatter()
            formatter.dateStyle = NSDateFormatterStyle.ShortStyle
            formatter.timeStyle = .ShortStyle
            cellView.textField!.stringValue = formatter.stringFromDate(d)+"****"
            cellView.textField!.lineBreakMode = .ByClipping
        }
        else {
            cellView.textField!.stringValue = "\(val)"
        }
        return cellView
    }
    return nil 

}

出了点问题,但我无法弄明白。我认为调整列的大小会调整包含的单元格的大小。我的不是。这只发生在显示日期的单元格中。我该怎么办?

1 个答案:

答案 0 :(得分:3)

示例您可以在IB中选择表视图单元格,然后单击“解决自动布局问题”按钮,该按钮位于左下角的弹出窗口和“添加缺失约束”。

enter image description here