在NSOutlineView列调整大小期间更新格式化程序
我在NSOutlineView中有一列使用由DateFormatter格式化的NSTextFields。
当列变宽或变窄时,我希望格式化程序能够更新。 我认为对列调整大小作出响应的最佳位置是在NSTextField viewWillDraw()中。 当列调整大小时,它的效果非常好。 不幸的是,它只适用于可见的文本字段。 当您滚动表格视图时,那些看不见的文本字段永远不会改变。
这是迄今为止我所拥有的。
override func viewWillDraw() {
super.viewWillDraw()
guard let formatter = formatter as? DateFormatter else { return }
switch self.visibleRect.width {
case 0.0..<DateTextField.shortFormatWidth:
formatter.dateStyle = .none
formatter.timeStyle = .short
case DateTextField.shortFormatWidth..<DateTextField.mediumFormatWidth:
formatter.dateStyle = .short
formatter.timeStyle = .short
case DateTextField.mediumFormatWidth..<DateTextField.longFormatWidth:
formatter.dateStyle = .medium
formatter.timeStyle = .short
default:
formatter.dateStyle = .long
formatter.timeStyle = .short
}
}
我也想过在重新调整列大小后重新加载大纲视图会处理事情,但这似乎不起作用。
提前致谢。
链接地址: http://www.djcxy.com/p/85217.html上一篇: Update Formatter during NSOutlineView column resize
下一篇: How many obscure subclasses of `NSFormatter` are there? Know of any others?