如何以编程方式展开和折叠NSSplitView的部分? [英] How to expand and collapse parts of NSSplitView programatically?

查看:378
本文介绍了如何以编程方式展开和折叠NSSplitView的部分?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要替换现有项目中的 RBSplitView NSSplitView 。应用程序现在只是豹,我想用 NSSplitView 替换 RBSplitView

I want to replace RBSplitView with NSSplitView in my existing project. The application is now leopard only and I would like to replace RBSplitView with the new NSSplitView shipped with Leopard.

但是,我缺少 RBSplitView 的方便的方法 expand在 NSSplitView 中的 collapse 。如何以编程方式扩展和折叠NSSplitView的部分?

However, I'm missing RBSplitView's handy methods expand and collapse in NSSplitView. How can I expand and collapse parts of NSSplitView programatically?

推荐答案

我只是程序化扩展和折叠 NSSplitView 工作。我也配置了我的 NSSplitView 展开/折叠子视图,当分隔线被双击,所以我想让这个功能(看起来好玩) 。这是我做的:

I just got programmatic expanding and collapsing of NSSplitView to work. I've also configured my NSSplitView to expand/collapse a subview whenever the divider is double-clicked, so I wanted this to play nice with that feature (and it seems to). This is what I did:

(在这个例子中, splitView NSSplitView 本身, splitViewSubViewLeft 是我想展开/折叠的子视图, lastSplitViewSubViewLeftWidth 是一个实例变量 CGFloat 。)

(in this example, splitView is the NSSplitView itself, splitViewSubViewLeft is the subview I wish to expand/collapse and lastSplitViewSubViewLeftWidth is an instance variable of type CGFloat.)

// 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
         ];
}

这篇关于如何以编程方式展开和折叠NSSplitView的部分?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆