首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何以编程方式展开和折叠NSSplitView的各个部分?

如何以编程方式展开和折叠NSSplitView的各个部分?
EN

Stack Overflow用户
提问于 2009-05-29 08:43:04
回答 8查看 16.5K关注 0票数 19

在我现有的项目中,我想用NSSplitView替换RBSplitView。这个应用程序现在只支持Leopard,我想用leopard附带的新NSSplitView替换RBSplitView

然而,我错过了RBSplitViewNSSplitView中方便的方法expandcollapse,如何以编程方式展开和折叠NSSplitView的某些部分?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-07-09 11:13:00

我刚刚实现了NSSplitView的程序化扩展和折叠。我还将我的NSSplitView配置为在双击分隔线时展开/折叠一个子视图,所以我希望它能很好地配合该功能(看起来确实如此)。这是我所做的:

(在本例中,splitViewNSSplitView本身,splitViewSubViewLeft是我希望展开/折叠的子视图,lastSplitViewSubViewLeftWidthCGFloat类型的实例变量。)

// subscribe to splitView's notification of subviews resizing
// (I do this in -(void)awakeFromNib)
[[NSNotificationCenter defaultCenter]
 addObserver:self
 selector:@selector(mainSplitViewWillResizeSubviewsHandler:)
 name:NSSplitViewWillResizeSubviewsNotification
 object:splitView
 ];

// this is the handler the above snippet refers to
- (void) mainSplitViewWillResizeSubviewsHandler:(id)object
{
    lastSplitViewSubViewLeftWidth = [splitViewSubViewLeft frame].size.width;
}

// wire this to the UI control you wish to use to toggle the
// expanded/collapsed state of splitViewSubViewLeft
- (IBAction) toggleLeftSubView:(id)sender
{
    [splitView adjustSubviews];
    if ([splitView isSubviewCollapsed:splitViewSubViewLeft])
        [splitView
         setPosition:lastSplitViewSubViewLeftWidth
         ofDividerAtIndex:0
         ];
    else
        [splitView
         setPosition:[splitView minPossiblePositionOfDividerAtIndex:0]
         ofDividerAtIndex:0
         ];
}
票数 10
EN

Stack Overflow用户

发布于 2010-04-28 17:29:37

只需隐藏您想要折叠的子视图,例如

[aSubViewToCollapse setHidden:YES];

您可能还想实现委托方法-(BOOL)splitView:shouldHideDividerAtIndex:返回YES,以便在折叠时隐藏分隔符。

票数 31
EN

Stack Overflow用户

发布于 2011-07-11 13:18:20

我尝试了上面的解决方案,发现它不起作用,因为isSubviewCollapsed从未返回YES

这些建议的组合产生了一个有效的结果

if ([splitViewTop isHidden]) {
    [splitViewTop setHidden:NO];
    [split
     setPosition:previousSplitViewHeight
     ofDividerAtIndex:0];
}
else {
    [splitViewTop setHidden:YES];
}
[split adjustSubviews];
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/925020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档