【发布时间】:2016-03-30 05:18:24
【问题描述】:
我正在尝试开发一个 OSX 应用程序。 Xcode 和 Swift 对我来说都是新的。
默认值都非常适合在用户更改窗口大小时修改对象,但不擅长在视图中的对象更改时更改窗口大小。
我已经看到了一些重新计算原点和帧大小的示例 - 我认为其中的数学部分将是直截了当的。但是,我无法获得对 NSWindow 对象的工作引用。单击拖动不会在任何 .swift 文件(AppDelegate、ViewController、自定义)中为窗口存放 IBOutlet。并且输入它不会绑定它。
我正在尝试完成的简化示例: 根据用户输入,更改显示内容,并调整窗口大小以包含新修改的显示。 在我的主故事板上 - 窗口控制器,继续 - 视图控制器,包含一个水平滑块和一个容器视图。容器视图被设置为 - 水平拆分视图控制器,segued to - 视图控制器的三个重复实例。
当用户更改滑动条时,三个最底部的视图控制器中的一个或多个将被隐藏/取消隐藏。
所附图片显示了我正在寻找的行为。
想象一下文本“小组”在哪里,有下拉框、文本框、单选按钮等的集合。
【问题讨论】:
-
我应该提到/标记我正在使用 xcode 7.2。我找到了其他几个依赖 IBOutlet 来获取对窗口的引用的解决方案——但我还没有找到让它工作的方法。想知道它的功能是否被关闭?我导入了一个最初在 6.x 中构建的示例应用程序 - 这正是阻止它构建的原因。
-
我不明白您如何无法获得对您的窗口的引用。如果您创建一个新项目,则应用程序委托已经有一个窗口的出口。将您的项目与新项目进行比较,看看您做错了什么。
-
@rocky - 在过去的几周里,我可能已经生成了几十个新项目 - 没有一个在 AppDelegate 中有 IBOutlet。我刚刚将 xcode 升级到 7.3 - 没有好消息。
-
我发现了这个...reddit post 我尝试将 myWindow 声明为 NSWindow 并将其指向 NSApp.mainWindow - 在运行时它失败了,声称内容为零。
-
我明白了。基本上,故事板是从 iOS 开始的,直到最近才被“移植”到 OSX。传统上,您可以使用 xib 和(可选)窗口控制器来创建应用程序。基本模板(无情节提要,非基于文档的应用程序)为您提供了一个应用程序,该应用程序具有由应用程序委托(作为插座)拥有的单个窗口,并在与应用程序主菜单相同的 xib 中定义。如果您的逻辑变得足够复杂,您可以添加更多 xib 和
NSWindowController子类来拥有这些窗口。如果您在创建项目时取消选中“使用故事板”,这在今天仍然有效。
标签: xcode swift macos nswindow