gpt4 book ai didi

swift - XCode6 NSSplitViewController 持有优先权和 canCollapse 不工作

转载 作者:可可西里 更新时间:2023-10-31 23:56:36 24 4
gpt4 key购买 nike

我希望有人能帮我解决这个问题。

无论我做什么,无论是通过 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 的调用,但运气不佳。

我想知道是否有人找到了解决方案,或者我做错了什么?

最佳答案

  • 使 NSSplitViewController 成为 NSSplitView 的委托(delegate):例如在 IB 中,将 NSSplitView 的委托(delegate)导出连接到它的 Controller 。 (似乎这并没有像人们期望的那样在 IB 模板中自动连接...)
  • 无需编码,您可以使用 IB 更改 NSSplitViewItem 的持有优先级(例如,一个为 249,另一个为 250)。
  • 这里还可以勾选“Can Collapse”等。
  • 我还使用 IB 设置 subview 的最小大小限制。

(一个问题:折叠后,我无法用鼠标恢复折叠 View ;这可能需要实现有效的矩形委托(delegate)方法。更新:折叠时有效矩形不适用,所以我认为使用 NSSplitViewItem.collapsed在代码中似乎是取消折叠的唯一方法。此行为与“经典”NSSplitView 不同...)

此基本设置按预期工作,无需特定编码或覆盖。 (OS X Storyboard应用程序、Swift、Xcode 6.1)

关于swift - XCode6 NSSplitViewController 持有优先权和 canCollapse 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26671160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com