2017-01-17 2 views
0

У меня есть вид сплит, который выглядит так:Не могу скрыть NSSplitView divider

| источник | фильтр | список | подробно |

Я хочу, чтобы программно скрыть фильтр, чтобы в моем 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

Я сделал разделители красными в моей подклассе ss, чтобы легче видеть, что происходит. Оба разделителя все еще существуют - рядом друг с другом, но справа справа должны полностью исчезнуть.

Это происходит, потому что я пытаюсь скрыть подсмотр, который не находится на краю? Возможно, он работает только для индекса 0 и max?

Как это сделать?

ответ

0

Вы, вероятно, хотите просто установить правильное положение делителя:

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

+0

Благодарим вас за это. Я посмотрю на это. – Trygve

+0

Nope - это не влияет на него. У меня также возникла проблема с объектами в свернутом виде, чтобы их ограничения на позиционирование перепутались, вероятно, потому, что ширина будет равна нулю. – Trygve

Смежные вопросы