Вот как это сделать в Obj-C, который не включает создание подклассов. Убедитесь, что у вас подключен делегат SplitView в IB.
Тогда в вашем классе делегата:
-(NSRect)splitView:(NSSplitView *)splitView effectiveRect:(NSRect)proposedEffectiveRect forDrawnRect:(NSRect)drawnRect ofDividerAtIndex:(NSInteger)dividerIndex
{
if ( [_splitView subviews][1].isHidden ==YES || [[_splitView subviews][1] frame].size.height < 50) //closed or almost closed
{
return NSZeroRect;
}
return proposedEffectiveRect;
}
- (BOOL)splitView:(NSSplitView *)splitView shouldHideDividerAtIndex:(NSInteger)dividerIndex
{
if ( [_splitView subviews][1].isHidden ==YES || [[_splitView subviews][1] frame].size.height < 50)
{
return YES;
}
return NO;
}
Это позволит скрыть разделитель, когда разделенное представление закрыто, но показать его, когда оно открыто.
Если вы не хотите, чтобы они могли перетаскивать его, даже когда он открыт, просто вырежьте весь код первого метода и верните только NSZeroRect. Сделайте то же самое во втором методе и верните только YES.