objective-c - OSX 10.10 中的 NSSplitViewController 使用 Xcode 6

标签 objective-c xcode nssplitview

根据 NSSplitViewControllers 的文档,关联的 NSSplitView 使用 NSSplitViewController 作为其委托(delegate)。特别是在文档中,“ Split View Controller 充当其 Split View对象(管理分隔线的对象)的委托(delegate)。如果您覆盖 Split View委托(delegate)方法,则您的覆盖必须调用 super。”

我在界面生成器中实现了一个 NSSplitViewController 并给它一个类。但是,从未调用过任何 splitView 委托(delegate)。此外,如果我只是做一些事情,比如吐 who the splitView delegate [ NSLog (@"%@", self.splitView.delegate); ],结果为“空”。但是,如果我在 IB 本身(通过将委托(delegate)导出拖到 NSSplitViewController)或内部代码([self.splitView setDelegate:self];)中分配委托(delegate),我会收到以下错误:

An uncaught exception was raised
SplitViewController's splitView is unable to use autolayout because the SplitViewController overrides an incompatible delegate method.

我完全糊涂了。

最佳答案

如果 Split View的委托(delegate)实现了以下方法之一,它将与自动布局不兼容。

splitView:constrainMinCoordinate:ofSubviewAt:
splitView:constrainMaxCoordinate:ofSubviewAt:
splitView:resizeSubviewsWithOldSize:
splitView:shouldAdjustSizeOfSubview:

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


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

关于objective-c - OSX 10.10 中的 NSSplitViewController 使用 Xcode 6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26982714/

相关文章:

objective-c - 如何将自定义 View 添加到 NSSplitView 分隔线

swift - 折叠 NSSplitViewItem 不调用 splitViewDidResizeSubviews

ios - MITM 攻击报告已弃用的 NSURLConnectionDelegate

xcode - 在 Cocos2d 中使用单独的类文件控制特定 CCSprite 的实例

ios - UINavigationView 奇怪的黑色阴影

xcode - 不推荐使用 setLineBreakMode 警告

objective-c - 如何约束NSSplitView?

ios - 在多个属性上对 NSArray 自定义对象进行排序

objective-c - 使用 NSDateComponents : changing year 获取一周的第一天

python - Ruby 或 Python 是否因为速度而不适合 iPhone 或 Mac 应用程序开发,以及任何可以帮助提高速度的编译器?