coc*_*fan 17 cocoa expand nssplitview
我想,以取代RBSplitView与NSSplitView我现有的项目.该应用程序现在只有豹子,我想用Leopard附带RBSplitView的新产品 替换NSSplitView.
不过,我错过RBSplitView的便利方法expand和collapse在NSSplitView.如何以编程方式展开和折叠部分NSSplitView?
And*_*den 29
只需隐藏您想要折叠的子视图,例如
[aSubViewToCollapse setHidden:YES];
Run Code Online (Sandbox Code Playgroud)
您可能还希望实现委托方法 - (BOOL)splitView:shouldHideDividerAtIndex:返回YES以在折叠时隐藏分隔符.
我刚刚进行了程序化扩展和崩溃NSSplitView工作.NSSplitView每当双击分割器时,我还配置了我的扩展/折叠子视图,所以我希望这对于该功能很好玩(似乎).这就是我做的:
(在这个例子中,splitView是我NSSplitView自己,splitViewSubViewLeft是我希望展开/折叠的子视图,lastSplitViewSubViewLeftWidth是一个类型的实例变量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
];
}
Run Code Online (Sandbox Code Playgroud)
我尝试了上面的解决方案,发现它不起作用,因为isSubviewCollapsed从未返回YES
这些建议的组合产生了有效的结果
if ([splitViewTop isHidden]) {
[splitViewTop setHidden:NO];
[split
setPosition:previousSplitViewHeight
ofDividerAtIndex:0];
}
else {
[splitViewTop setHidden:YES];
}
[split adjustSubviews];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14856 次 |
| 最近记录: |