问题标签 [nssplitviewcontroller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2668 浏览

macos - 基于 NSSplitViewController 的应用程序几乎永远不会以正确的大小启动

我有这个应用程序,它使用 aNSSplitViewController作为根,并有一个 NSTabViewControllerconnected 作为它的 detailViewController。

此应用程序设置为以 1024x768 分辨率启动。左窗格应在 320x768 处启动,而右窗格(tabViewController 所在的位置)应在 704x768 处启动。

从我运行这个应用程序的 10 次开始,9 次它会以不正确的大小(大约 500x500)启动。另一个奇怪的事情是这个应用程序不应该是可伸缩的,但是如果你将鼠标悬停在窗口边框附近,你会看到光标指示缩放。

我希望它以正确的大小启动并且没有可扩展的选项。

这两个设置都在界面生成器上,但被忽略了。

您可以在此处下载演示该问题的示例项目。停止并运行项目几次以查看问题。

我该如何解决这个问题?

0 投票
0 回答
946 浏览

macos - OSX 10.10 NSSplitViewController 内容大小和调整大小

我的问题的基础是,当我调整窗口大小时,拆分视图的左窗格会调整大小,而右侧保持固定宽度,我希望它以相反的方式工作。

如果我尝试移动分割分隔线以使右侧更大,它会弹回。

我在我的 NSSplitViewController 子类中添加 SplitView 项目,如下所示:

我的 mediaView 中的子视图的宽度设置为 >=400,所以这不是问题。

0 投票
4 回答
2676 浏览

macos - Xcode 7 中的 NSToolbar 使用 Storyboards (NSWindowController -> NSSplitViewController)

嗨,我已经看到这个问题被问了几次,但还没有明确的答案,所以我为 xcode 7 和 swift2 创建了它(无论如何这可能已经改变了一些事情)。

我使用 Xcode 7 和 Cocoa OSX Story board + swift2 创建了一个项目,所以我的项目从连接到 NSViewController的NSWindowController开始(如预期的那样!)。我在窗口控制器中添加了一个NSToolbar并在工具栏中添加了一个NSButton。我将 NSViewController 更改为新的NSSplitViewController之一,它链接到三个NSViewController并水平显示它们的视图 - 使用垂直分隔线 - (类似于您在照片应用程序或 Yosemite + 页面中看到的布局)。我的最终目标是我的工具栏中的按钮显示和隐藏第一个拆分。

我的理解是,我希望要实现这一点,我应该在 NSSplitViewController 中创建一个动作,以或多或少地改变自动布局约束的方式:如何在 Mac 中折叠和展开视图应用?.

然后以某种方式将此操作链接到工具栏中的 NSButton ......它恰好在 NSWindowController 中(在层次结构中很远并且被隔离)......

我已经解决了有关 NSToolbar 和故事板的其他问题,但未能实现我的目标:

  • YouTube 视频:Cocoa Programming L17 - NSToolbar这是我发现的最接近解决问题的方法,但他的方法不适用于情节提要,只能创建您自己的 xib 文件。
  • 在这个问题中:如何在 Xcode 6 和 Storyboard 中使用 NSToolBar?一个人建议使用第一个响应器建立链接,并期望一切都在运行时连接(这看起来有点狡猾,而不是我认为苹果会实现它的方式......)。第二个人建议在 NSWindowController 中创建一个视图控制器变量并从那里操作它的属性......但同样,也有点狡猾。

  • 我在那个问题中看到的一个最新评论似乎是解决问题的最佳方法(但仍然不如我想的那么好)是将 NSObjectController 添加到每个场景的停靠栏,当场景加载时,设置值的对象到另一个 secene 的控制器。这真的是最好的前进方式吗?如果是这样,我怎么能做到这一点?

Apple 在 WWDC15 中确实(再次)提到,他们为 osx 和拥有视图控制器的拆分视图控制器创建了故事板,以便您可以将逻辑和工作转移到特定的视图控制器,所以我期待从在我的拆分视图控制器中,因为这是需要更改的目标。

有谁知道如何从视图控制器本身实现这一点?我真的无法找到将我的 ToolBarItem 连接到它的方法。

0 投票
2 回答
1061 浏览

objective-c - 以编程方式切换调整 NSSplitViewItems 的大小

我正在尝试找到一种以编程方式调整大小的方法NSSplitViewItems

假设NSWindow帧大小为 500x500px。 masterViewItem宽度为 100px,而subViewItem宽度为 400px。

FOO,我想masterViewItem折叠到 0px(向左),同时subViewItem展开以填充整个窗口(500px)。

BAR,我想masterViewItem展开回 100px,而subViewItem折叠回原来的 400px。

我能够为每个项目设置动画,使其看起来折叠/展开,即

但是分隔线不会移动,使两个项目只是单独移动,并且看起来整个屏幕都不会折叠/展开。

我将如何实现这一点?提前致谢。

更新

所以我做了更多的研究,发现了这个:

如何在调整大小时为 NSSplitView 设置动画?

所以我做了这样的代码:

但是没有效果。有什么建议么?

0 投票
1 回答
512 浏览

storyboard - 如何在 Swift + Storyboards 中按项目名称访问 splitViewItems

我目前正在使用具有两个子拆分视图项的 NSSplitViewController(一个是视图控制器,一个是另一个拆分视图控制器,如图所示:

在此处输入图像描述

我想以编程方式访问拆分视图项,以从窗口控制器更改折叠状态(以及稍后的一些其他属性)。

我可以使用以下方法轻松地按位置访问拆分视图项:

我认为从长远来看,使用位置(示例中的 1)不是一个好主意(例如,如果我将来重新排列拆分项目)。有没有办法通过索引号来访问具有更永久链接的拆分视图项目?

我想我可以尝试将 Storyboard ID 分配给拆分视图项的控制器,并使用数组过滤器方法按名称搜索确切的 ID,但这可能有点麻烦......有没有像这样更简单的东西? :

0 投票
1 回答
1076 浏览

macos - Source List Sidebar implementation in Swift with split view

I'm having issues trying to implement a navigation sidebar for an app. Considering that source lists are so prominent in OS X apps and that Apple's Human Interface Guidelines refer to a source list as an ideal way to navigate within an app, I'm surprised that there aren't more resources available (well not that I can find anyway). Everything that relates to split views that I can find seem to refer to ios.

I have no issues with implementing the content of the source list, my issue arises when it comes to view swapping based on the selection within the source list.

Essentially I want the user to select an option in the source list on the master side of a split view, and then for the corresponding view to be loaded in the detail side of the split view. I'm not sure if there is an easy way to implement something like this using storyboards as there is for a tabview controller for example? If not, is anyone able to suggest a basic implementation in swift to help get me started? I'm not sure where to start from the view swapping side of things.

Thanks in advance.

EDIT:

Further to my previous post, I have included below a basic implementation of a view swap but when the view is replaced, the previous view remains. In addition to my questions about, how do I remove the previous view before adding a new one? My line of code removeFromSuperView() seems to be causing major problems!

class AppController: NSObject {

}

0 投票
3 回答
1176 浏览

swift - 通过 OS X 故事板中的标识符实例化拆分视图控制器不会加载视图层次结构

我正在尝试在 Swift OS X 应用程序中实现主-细节-细节视图。顶层视图控制器是一个带有三个子视图控制器的 NSSplitViewController。主视图和第一个细节视图是相当标准的,具有固定的行为。第二个详细视图需要根据第一个详细视图中的选择进行更改。

第二个细节控制器是一个简单的视图控制器,它将通过根据选择安装新的子视图和控制器来响应第一个细节视图中的选择变化。

最终内容的替代视图控制器在同一个故事板中实现,没有通过 segue 连接到任何东西;目的是使用 -[NSStoryboard instantiateControllerWithIdentifier:] 创建它们并将它们安装为子视图控制器和子视图。

实例化的视图控制器恰好是 NSSplitViewControllers。

这是问题所在:当我实例化详细拆分视图控制器并安装它们时,它们是空的。到目前为止,我能够观察到的是:

  • 实例化的视图控制器属于正确的类(NSSplitViewController 的子视图);
  • 他们没有子视图
  • 他们确实有 splitViewItems,而 splitViewItems 是我希望看到加载的视图控制器

我需要做些什么来完全加载/填充加载的拆分视图控制器吗?

TIA,道格

0 投票
1 回答
432 浏览

macos - 如何在 NSSplitViewController 中禁用调整拆分视图项目的大小

我有一个拆分视图控制器。我使一切正常,但只有一件事:

用户可以拖动中心栏来调整底部视图的大小。

我一直在摆弄故事板一段时间,但没有找到禁用它的方法。

正常分割视图

自下而上

自下而上

有没有办法防止它像上图那样移动?谢谢。

0 投票
1 回答
433 浏览

swift - 设置 SplitViewItem 的 ViewController

我无法设置 nssplitviewcontroller 的拆分视图的视图控制器。我有来自故事板的参考,并且正在尝试以编程方式设置项目视图控制器:

我从控制台收到此错误(不会崩溃)并且没有显示以编程方式设置的 vc:

0 投票
1 回答
1336 浏览

swift - 以编程方式更改 NSSplitViewController 中的视图

https://developer.apple.com/library/prerelease/mac/documentation/AppKit/Reference/NSSplitViewController_Class/index.html的 NSSplitViewController 类参考, 我了解到它有一个属性,即 NSSplitViewItem 类型的对象数组。它还具有插入和删除 NSSplitViewItem 对象的方法。但是,没有 NSSplitViewItem 的文档。如何创建这样的对象?

我在网上看到一个例子:

但根本没有找到 Apple 文档。似乎苹果希望开发人员不要以编程方式添加/删除 NSSplitViewItem

有人可以告诉我如何创建一个 NSSplitViewItem 吗?