Adr*_*ers 2 xcode nstableview swift
我在这里有一个简单的应用程序示例,我将其组合在一起,而我得到的几乎就是我想要的。
\n\n问题是,当视图加载时,在 NSViewController 的 viewDidLoad 中,我将 tableView 的选定索引设置为 0,即第一项(有效)。
\n\n我注意到的是,当发生这种情况时,所选行的颜色显示为灰色(即好像它不是活动窗口/视图)\xe2\x80\xa6 它似乎只以正常的蓝色高亮当我物理单击所选行时的颜色。
\n\n我可以确认该行是被选中并且一切看起来都很好。
\n\n有任何想法吗?
\n\n为了确认,我用来选择行的代码是:
\n\noverride func viewDidAppear() {\n self.tableView.selectRowIndexes(NSIndexSet(index: 0), byExtendingSelection: false)\n}\nRun Code Online (Sandbox Code Playgroud)\n\n以下是实际视图本身发生的情况:
\n\n\n\n上图:深灰色线是“选择栏”。这就是视图激活后立即发生的情况。
\n\n\n\n上图:一旦我点击那一行(曾经是深灰色的那一行),我就会得到他想要的高光……即海军蓝。
\n单元格为灰色的原因是因为表视图没有焦点/不是第一响应者。
tableView单元格选择颜色有3种状态
没有选择=清除行背景
选择和焦点 = 蓝色行背景
选择且无焦点 = 灰色行背景
这可能是因为另一个视图具有焦点。简单地选择一个单元格不会将焦点转移到 tableView。您需要调用NSWindow.makeFirstResponder()来更改焦点。
func tableViewSelectionDidChange(notification: NSNotification) {
let tableView = notification.object as! NSTableView
if tableView.selectedRow != -1 {
self.window!.makeFirstResponder(self.tableView)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
909 次 |
| 最近记录: |