我希望有人能帮我解决这个问题。
无论我做什么,无论是通过 IB 还是在代码中,我都无法使新的 NSSplitViewController 及其项目可折叠或保持其优先级。
尽管此视频另有说明,但无法通过界面构建器完成此操作:https://www.youtube.com/watch?v=ZIIuPo4F6tQ
我只能使 splitview 项目在代码中具有最小宽度,但仅此而已。我测试了 Swift 和 Objective-C 实现,但运气不佳。
这是我用swift写的:
override func viewDidLoad() {
super.viewDidLoad()
// ---
var left: NSSplitViewItem = self.splitViewItems[0] as NSSplitViewItem
var right: NSSplitViewItem = self.splitViewItems[1] as NSSplitViewItem
// ---
// NOTE: these are not working properly in the interface builder for now
self.view.addConstraint(NSLayoutConstraint(
item: left.viewController.view,
attribute: NSLayoutAttribute.Width,
relatedBy: NSLayoutRelation.GreaterThanOrEqual,
toItem: nil,
attribute: NSLayoutAttribute.NotAnAttribute,
multiplier: 0,
constant: 200
))
self.view.addConstraint(NSLayoutConstraint(
item: right.viewController.view,
attribute: NSLayoutAttribute.Width,
relatedBy: NSLayoutRelation.GreaterThanOrEqual,
toItem: nil,
attribute: NSLayoutAttribute.NotAnAttribute,
multiplier: 0,
constant: 200
))
// ---
// NOTE: these are not working in the interface builder neither here but set anyway to demonstrate the problem
left.canCollapse = true // has no effect
right.canCollapse = true // has no effect
// ---
// NOTE: this is not working in the interface builder neither here but set anyway to demonstrate the problem
right.holdingPriority = 1.0 // has no effect
}
这些都不起作用。我什至尝试在函数底部移动对 super 的调用,但运气不佳。
我想知道是否有人找到了解决方案,或者我做错了什么?
最佳答案
(一个问题:折叠后,我无法用鼠标恢复折叠 View ;这可能需要实现有效的矩形委托(delegate)方法。更新:折叠时有效矩形不适用,所以我认为使用 NSSplitViewItem.collapsed在代码中似乎是取消折叠的唯一方法。此行为与“经典”NSSplitView 不同...)
此基本设置按预期工作,无需特定编码或覆盖。 (OS X Storyboard应用程序、Swift、Xcode 6.1)
关于swift - XCode6 NSSplitViewController 持有优先权和 canCollapse 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26671160/