gpt4 book ai didi

macos - 在 Swift 中显示源列表 (NSOutlineView) 中的字符串列表

转载 作者:行者123 更新时间:2023-11-28 11:21:01 26 4
gpt4 key购买 nike

我正在尝试在源列表侧边栏中显示一个简单的字符串列表 - 类似于 Finder 或 Github 应用程序中的列表。从阅读 protocol reference我看不到哪种方法正在设置 View 显示的内容。到目前为止,我有:

var items: [String] = ["Item 1", "Item 2", "Item is an item", "Thing"]
func outlineView(outlineView: NSOutlineView, child index: Int, ofItem item: AnyObject?) -> AnyObject {
return items[index]
}

func outlineView(outlineView: NSOutlineView, isItemExpandable item: AnyObject) -> Bool {
return false
}
func outlineView(outlineView: NSOutlineView, numberOfChildrenOfItem item: AnyObject?) -> Int {
if item == nil {
return items.count
}
return 0
}
func outlineView(outlineView: NSOutlineView, objectValueForTableColumn tableColumn: NSTableColumn?, byItem item: AnyObject?) -> AnyObject? {
return "ITEM"
}
func outlineView(outlineView: NSOutlineView, setObjectValue object: AnyObject?, forTableColumn tableColumn: NSTableColumn?, byItem item: AnyObject?) {
println(object, tableColumn, item)
}
// Delegate
func outlineView(outlineView: NSOutlineView, dataCellForTableColumn tableColumn: NSTableColumn?, tem item: AnyObject) -> NSCell? {
println("Called")
let view = NSCell()
view.stringValue = item as String
return view
}

我得到的只是一个包含四个空白项(无文本)的源列表。我是否需要覆盖 NSOutlineViewDelegate 中的另一个方法来显示信息?

最佳答案

如果您乐于使用基于 View 的大纲 View ,而不是基于单元格的大纲 View ,您可以替换委托(delegate)方法outlineView: dataCellForTableColumn:item,及其 view 等效 outlineView:viewForTableColumn:item:

func outlineView(outlineView: NSOutlineView,
viewForTableColumn tableColumn: NSTableColumn?,
item: AnyObject) -> NSView? {

var v = outlineView.makeViewWithIdentifier("DataCell", owner: self) as NSTableCellView
if let tf = v.textField {
tf.stringValue = item as String
}
return v
}

请注意,此方法中重要的调用是 NSTableView 方法 makeViewWithIdentifier:owner:。此方法的第一个参数 - 字符串 DataCell - 是 identifier Interface Builder 提供给 NSTableViewCell 当您将它拖到 Canvas 上时,它会自动插入到您的 NSOutlineView 中的对象。该对象有一个 textField 属性和一个 imageView;您需要做的就是将 textFieldstringValue 属性设置为 item 的值。

关于macos - 在 Swift 中显示源列表 (NSOutlineView) 中的字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28134062/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com