gpt4 book ai didi

objective-c - 单击行中任意位置展开 NSOutlineView 项目

转载 作者:搜寻专家 更新时间:2023-10-30 19:57:41 24 4
gpt4 key购买 nike

通过单击整行来扩展 NSOutlineView 行的最方便的方法是什么? (不是披露三角形)

是否有针对此的单一设置?或者一些神奇的模式设置改变了类似于源列表样式的行为?

最佳答案

同时展开折叠的最简单方法似乎是通过单击来实现目标/操作。我曾尝试覆盖 outlineview 委托(delegate)中的选择功能,这对扩展有效但对折叠无效。下面的代码用于单击展开/折叠:

[self.myOutlineView setTarget:self]; // Needed if not done in IB
[self.myOutlineView setAction:@selector(outlineViewClicked:)];
[self.myOutlineView setSelectionHighlightStyle:NSTableViewSelectionHighlightStyleNone];

- (void) outlineViewClicked:(NSOutlineView*)sender
{
id clickItem = [sender itemAtRow:[self.itemsOutlineView clickedRow]];
if (clickItem)
{
BOOL optionPressed = (([[NSApp currentEvent] modifierFlags] & NSAlternateKeyMask) == NSAlternateKeyMask);

[sender isItemExpanded:clickItem] ?
[sender.animator collapseItem:clickItem collapseChildren:optionPressed] :
[sender.animator expandItem:clickItem expandChildren:optionPressed];
}
}

扩展它以折叠 sibling :

- (void) outlineViewClicked:(NSOutlineView*)sender
{
id clickItem = [sender itemAtRow:[self.itemsOutlineView clickedRow]];

if (!clickItem)
return;

BOOL optionPressed = (([[NSApp currentEvent] modifierFlags] & NSAlternateKeyMask) == NSAlternateKeyMask);

// Collapse the sibling nodes (tree controller type NSTreeNode)
for (NSTreeNode* node in ((NSTreeNode*)clickItem).parentNode.childNodes)
{
if (node != clickItem && [sender isItemExpanded:node])
[sender.animator collapseItem:node];
}

[sender isItemExpanded:clickItem] ?
[sender.animator collapseItem:clickItem collapseChildren:optionPressed] : [sender.animator expandItem:clickItem expandChildren:optionPressed];
}

@ben-haller 建议 optionPressed BOOL 以及随后在 expandChildrencollapseChildren 中的使用,他指出“一个选项-单击显示三角形展开或折叠其包含的所有项目。” (引自 About Outline Views)Ben 的修改将该选项单击行为扩展到此处的“行中的任意位置”方法。

关于objective-c - 单击行中任意位置展开 NSOutlineView 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23665184/

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