我们有一个父Split视图(NSSplitView),和两个子视图,Content和SideBar(侧边栏右侧).
切换SideBar视图的最佳Cocoa友好方式是什么?
提示:我一直试图这样做,但我仍然有问题隐藏NSSplitView的分隔符.我怎么能这样做,同时隐藏它?
我想实现一个3窗格的垂直NSSplitView(非常类似于Mail.app).我不确定从哪里开始.我很确定我需要实现一个NSSplitViewDelegate,但我不确定哪些方法和/或它们的实现.
我想要的布局如下:
+----------+------------------+------------------------------------+
| | | |
| | | |
| | | |
| | | |
| Pane 1 | Pane 2 | Pane 3 |
| | | |
| | | |
| | | |
| | | |
| | | |
+----------+------------------+------------------------------------+
Run Code Online (Sandbox Code Playgroud)
我想为每个窗格实现以下约束:
任何指针都将非常感激.
我正在尝试创建一个类似Reeder/Sparrow的UI来处理我的应用程序的内容.目前我在内部使用带有两个NSView的NSSplitView(左边的那个是内容列表,另一个是右边的"检查器").
我想知道的是如何在标题栏上创建分隔符,它也可以作为分割视图的分隔符.我已经在使用INAppStoreWindow子类了.
有任何想法吗?Thanx提前
我试图在移动其包含的窗口的同时制作一个(新的10.10)NSSplitViewItem崩溃和解体,以便将整个事物保持在"适当的位置".
问题是,我在动画中得到一个抽搐(如看到这里).
我正在进行折叠的代码是这样的:
func togglePanel(panelID: Int) {
if let splitViewItem = self.splitViewItems[panelID] as? NSSplitViewItem {
// Toggle the collapsed state
NSAnimationContext.runAnimationGroup({ context in
// special case for the left panel
if panelID == 0 {
var windowFrame = self.view.window.frame
let panelWidth = splitViewItem.viewController.view.frame.width
if splitViewItem.collapsed {
windowFrame.origin.x -= panelWidth
windowFrame.size.width += panelWidth
} else {
windowFrame.origin.x += panelWidth
windowFrame.size.width -= panelWidth
}
self.view.window.animator().setFrame(windowFrame, display: true)
}
splitViewItem.animator().collapsed = !splitViewItem.collapsed
}, completionHandler: nil)
}
}
Run Code Online (Sandbox Code Playgroud)
我知道"不要跨越流"问题(来自会话213,WWDC'13),其中在主线程上运行的窗口大小调整动画和在单独线程上运行的核心动画崩溃动画相互干扰.将splitViewItem折叠动画放到主线程上似乎是错误的方法,我有一种唠叨的感觉,有一个更好的方法来做到这一点,我错过了.
由于我没有在任何地方找到NSSplitViewItems的任何文档(还),我将不胜感激.
我已经在GitHub上的小测试项目在这里 …
我曾经使用并喜欢RBSplitView,但是由于某个版本的xcode不再支持IB插件,我无法以编程方式重新实现它.
因此我回到使用NSSplitView.NSSplitView适合我需要的东西,就是NSSplitView的autoSave被打破了.所以我决定自己实施它.
我目前正在做的事情是调整NSSplitView的1个子视图的大小.
调整NSSplitView大小的正确方法是什么? - setPositionOfDivider:itIndex:应该是要走的路(没试过),但是我不知道如何获得分频器的当前位置.
- 提前致谢
是否可以使用Xcode提供的自动布局选项实现以下目的?例如,通过更改拥抱或压缩设置.

实现此调整大小行为的推荐方法是什么?
根据NSSplitViewControllers上的文档,关联的NSSplitView使用NSSplitViewController作为其委托.特别是在文档中,"拆分视图控制器充当其拆分视图对象(管理分隔符的对象)的委托.如果覆盖拆分视图委托方法,则覆盖必须调用super."
我在界面构建器中实现了一个NSSplitViewController并给它一个类.但是,没有调用任何splitView委托.另外,如果我只是像spit那样执行splitView委托[NSLog(@"%@",self.splitView.delegate); ],结果为"null".但是,如果我在IB本身(通过将委托出口拖动到NSSplitViewController)或内部代码([self.splitView setDelegate:self];)中分配委托,我会收到以下错误:
引发了未捕获的异常
SplitViewController的splitView无法使用autolayout,因为SplitViewController会覆盖不兼容的委托方法.
我完全陷入了困境.
我刚刚使用Swift,Storyboards和Document创建了一个简单的Cocoa应用程序.
我所做的唯一改变是用Split View Controller替换Main.storyboard中的默认View Controller.除了一件事之外,所有内容都可以很好地填充子视图:当我启动应用程序时,分隔符始终位于窗口的最左侧.这是垂直拆分视图.(如果我改为水平,则分隔符从最顶部开始.)
我尝试过添加约束,但IB甚至不允许我向子视图中的内容添加约束.
我也尝试过使用splitView.setPosition ofDividerAtIndex但没有成功.
如何指定左侧子视图的宽度或分隔符的位置?
我有一段时间设置一个简单的拆分视图.第一个拆分视图已折叠.我需要为它设置最小宽度.我在网上看到的所有内容(NSSplitViewController/NSSplitView都很少)都是针对Objective-C的,将所有内容放在app委托中,并使用XIB.
这是一个场景:具有segView到SplitView控制器的窗口控制器,它有两个拆分视图(2个视图控制器).
哪个对象需要NSSplitViewDelegate?
编辑:添加代码片段: 例如,我有这个:
import Cocoa
class ViewController: NSSplitViewController, NSSplitViewDelegate {
@IBOutlet weak var pdlSplitView: NSSplitView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func splitView(splitView: NSSplitView, constrainMinCoordinate proposedMinimumPosition: CGFloat, ofSubviewAt dividerIndex: Int) -> CGFloat {
return proposedMinimumPosition + 200
}
}
Run Code Online (Sandbox Code Playgroud)
还有更多我想念的吗?
谢谢
UPDATE
根据下面的评论,我做了一个更改,但现在我在AppDelegate的类定义上获得了一个sigAbort.完整代码
视图控制器:
import Cocoa
class ViewController: NSSplitViewController, NSSplitViewDelegate {
@IBOutlet weak var pdlSplitView: NSSplitView!
let publicDataListings : PDL = PDL()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view. …Run Code Online (Sandbox Code Playgroud) 我试图在XCode中理解Storyboard.我从模板创建了一个新的Mac OS X应用程序并定义了一个简单的Storyboard,如下图所示:
问题是当我运行应用程序时,我的窗口看起来像这样:
我必须调整它以查看垂直分割视图的右和左部分.我已经定义了高度和我的窗口,所以我不知道为什么会发生这种情况我真的不知道为什么这个窗口正确显示下面的视图控制器而不是拆分视图控制器.
我在拆分视图控制器上做错了什么?
nssplitview ×10
cocoa ×6
macos ×5
xcode ×5
objective-c ×4
swift ×4
appkit ×1
storyboard ×1
toggle ×1
window ×1