无法隐藏NSSplitView分隔符

时间:2017-01-17 14:50:41

标签: cocoa show-hide nssplitview

我有一个分割视图,如下所示:

|来源|过滤器|列表|细节|

我想以编程方式隐藏过滤器,所以在我的NSSplitView委托中我使用

-(BOOL)splitView:(NSSplitView *)splitView shouldHideDividerAtIndex:(NSInteger)dividerIndex

隐藏我正在使用的过滤器部分

[[[[self splitView] subviews] objectAtIndex:1] setHidden:YES];
[[self splitView] adjustSubviews];

隐藏之前: enter image description here 隐藏后: enter image description here

我在子类中使分隔符变红,以便更容易地看到发生了什么。两个分隔线仍在那里 - 彼此相邻,但右边的分隔线应该完全消失。

这是否正在发生,因为我试图隐藏不在边缘的子视图?也许它只适用于索引0和最大值?

我该如何做到这一点?

1 个答案:

答案 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
}

我在这里为你创建了一个测试项目:

https://github.com/emankovski/CollapseSplitViews

相关问题