使用Xcode 6的OSX 10.10中的NSSplitViewController

Joe*_*ett 6 xcode objective-c nssplitview

根据NSSplitViewControllers上的文档,关联的NSSplitView使用NSSplitViewController作为其委托.特别是在文档中,"拆分视图控制器充当其拆分视图对象(管理分隔符的对象)的委托.如果覆盖拆分视图委托方法,则覆盖必须调用super."

我在界面构建器中实现了一个NSSplitViewController并给它一个类.但是,没有调用任何splitView委托.另外,如果我只是像spit那样执行splitView委托[NSLog(@"%@",self.splitView.delegate); ],结果为"null".但是,如果我在IB本身(通过将委托出口拖动到NSSplitViewController)或内部代码([self.splitView setDelegate:self];)中分配委托,我会收到以下错误:

引发了未捕获的异常
SplitViewController的splitView无法使用autolayout,因为SplitViewController会覆盖不兼容的委托方法.

我完全陷入了困境.

Tay*_*lor 19

如果拆分视图的委托实现以下方法之一,则它与自动布局不兼容.

splitView:constrainMinCoordinate:ofSubviewAt:
splitView:constrainMaxCoordinate:ofSubviewAt:
splitView:resizeSubviewsWithOldSize:
splitView:shouldAdjustSizeOfSubview:
Run Code Online (Sandbox Code Playgroud)

https://developer.apple.com/library/mac/releasenotes/AppKit/RN-AppKitOlderNotes/#10_8AutoLayout


并且因为NSSplitViewController需要使用自动布局(在文档中提到),所以这些方法与NSSplitViewController不兼容,不应在子类中实现.

  • 谢谢!我最初对此感到非常困惑,因为我认为唯一的选择是低(250)和高(750),当我这样做时,我没有得到我期待的行为.通过将子视图0保持模式更改为260并将子视图1保持模式保持为250,我完全得到了我想要做的事情.非常感激! (2认同)