我想实现像Finder.app一样工作的侧栏。但我不知道如何在折叠和扩展组后保持行选择状态。
任何想法或建议将不胜感激。
答案 0 :(得分:5)
您必须自己实施。系统不为您保留选择的原因是,当项目折叠时,其所有子项目实际上都已释放,因此它们根本不存在。
解决方案非常简单直接。
ivar
中,并根据用户互动进行更新。为此,您可能希望实现-outlineViewSelectionDidChange:
委托方法。请注意,在更新之前,您应始终确保[[notification object] selectedRow] != -1
满意,因为折叠所选项目会导致此邮件与selectedRow
-1
一起发送。-outlineViewItemDidExpand
委托方法中,如果outlineView.selectedRow
为-1
,请咨询您的ivar
并通过向{-selectRowIndexes:byExtendingSelection:
发送NSOutlineView
消息来手动恢复选择{1}}。