我有一个分割视图,如下所示:
|来源|过滤器|列表|细节|
我想以编程方式隐藏过滤器,所以在我的NSSplitView委托中我使用
-(BOOL)splitView:(NSSplitView *)splitView shouldHideDividerAtIndex:(NSInteger)dividerIndex
隐藏我正在使用的过滤器部分
[[[[self splitView] subviews] objectAtIndex:1] setHidden:YES];
[[self splitView] adjustSubviews];
我在子类中使分隔符变红,以便更容易地看到发生了什么。两个分隔线仍在那里 - 彼此相邻,但右边的分隔线应该完全消失。
这是否正在发生,因为我试图隐藏不在边缘的子视图?也许它只适用于索引0和最大值?
我该如何做到这一点?
答案 0 :(得分:1)
您可能只想设置分隔符的正确位置:
splitView.setPosition(splitView.bounds.width, ofDividerAtIndex: 0)
并覆盖另一个委托方法以允许折叠视图:
func splitView(splitView: NSSplitView, canCollapseSubview subview: NSView) -> Bool {
//You may choose which view you allow to collapse here...
return true
}
func splitView(splitView: NSSplitView, shouldHideDividerAtIndex dividerIndex: Int) -> Bool {
return true
}
我在这里为你创建了一个测试项目: