问题描述
我要替换现有项目中的 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的部分?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!