Swift 故事板:拆分视图控制器在 MacOS 上未正确显示

Posted

技术标签:

【中文标题】Swift 故事板:拆分视图控制器在 MacOS 上未正确显示【英文标题】:Swift storyboards: split view controller not showing properly on MacOS 【发布时间】:2014-11-02 23:05:02 【问题描述】:

我正在尝试在 MacOS 上使用故事板和 swift 实现拆分视图控制器:

由于某种原因,只有右侧出现。有什么想法吗?

【问题讨论】:

【参考方案1】:

这实际上是一个窗口大小问题。由于它是未定义的,它会将左侧推到视野之外。只需将光标放在左侧并拖动即可显示左侧视图。

希望对你有帮助。


更新:

实际上不是窗口大小问题。看起来 split view controller 默认将一侧推到视野之外。相反,我能够使用插入视图控制器的拆分视图组件正确查看两个窗格。

我将在最新的 WWDC 中查看有关此问题的信息:

https://developer.apple.com/videos/wwdc/2014/?id=212

https://developer.apple.com/videos/wwdc/2014/?id=214


2014 年 3 月 11 日更新:

在第一个截屏视频的 07:00 分钟后,我知道发生了什么。看看下面的截图:

    使 Split View Controller 与主窗口一样宽。 调整拆分视图项目的大小。 点击最右边的项目Split View Item,在Pin弹出菜单中添加Missing Constraints em>。

您可能需要几次尝试才能做到正确。我测试了 3 次,它确实有效。

【讨论】:

我如何定义它以使其停止这样做? 缺少约束不可点击。我有同样的问题【参考方案2】:

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/ObjC_classic/index.html#//apple_ref/doc/uid/20001093

NSSplitViewDelegate

类SplitViewController: NSSplitViewController//,NSSplitViewDelegate

Swift storyboards: split view controller not showing properly

这对我来说也确实是个问题。现在我在我的代码中解决了这个问题。

1.创建一个类扩展的NSSplitViewController。 2.将在第 1 阶段创建的类设置为您在 StoryBord 上创建的 SplitView 上的自定义类。 3.在viewDidLoad()中调用MySplitView.adjustSubviews()。

import Cocoa

class SplitViewController: NSSplitViewController//,NSSplitViewDelegate
    @IBOutlet weak var MySplitView: NSSplitView!
        override func viewDidLoad() 
        super.viewDidLoad()
        MySplitView.adjustSubviews();
    
    override func splitView(splitView: NSSplitView, constrainMinCoordinate proposedMinimumPosition: CGFloat, ofSubviewAt dividerIndex: Int) -> CGFloat 
        return proposedMinimumPosition + 200
    

【讨论】:

以上是关于Swift 故事板:拆分视图控制器在 MacOS 上未正确显示的主要内容,如果未能解决你的问题,请参考以下文章

在故事板中添加新的视图控制器后是不是需要手动添加 ViewController.swift 文件?

带有故事板的 UISplitViewController

应用于控制器的背景未应用于故事板swift中的表格视图单元格

Swift 中的单元测试 | IOS 故事板 |无法转换目标 c 中定义的视图控制器类

你如何摆脱swift中主要故事板的代码?

Swift 4:将数据从集合视图单元传递到另一个没有故事板的视图控制器