【问题标题】:Why is it not possible to load a UIViewController from a nib into Swift Playground?为什么无法将 UIViewController 从 nib 加载到 Swift Playground 中?
【发布时间】:2017-07-10 12:58:59
【问题描述】:
  1. 创建一个新的游乐场
  2. 创建一个 UI 文件 (xib) 并将其添加到 Playground 中的“Resources”文件夹中
  3. 在 xib 中,将 UIViewController 拖到画布中。默认情况下,它会附加一个 UIView。把它留在那里。
  4. 在终端中,将 xib 编译为 nib(使用 ibtool --compile out.nib in.xib)。现在有一个 nib 文件可供您使用。

最后在 Playground 中,从 nib 加载 VC 并将其分配给 Playground 的实时视图:

import UIKit
import PlaygroundSupport

class MyVC: UIViewController {

}

let vc = MyVC(nibName: "vc", bundle: nil)

PlaygroundPage.current.liveView = vc

不管我如何切片,都会不断收到“加载了“vc”笔尖但未设置视图出口”错误。

我用尽了所有关于这个问题的搜索结果和书籍阅读都是徒劳的。也许这是不可能的?

我可以很好地从笔尖加载 UIView。我还可以在 Playground 中创建一个视图控制器类,并在其 loadView 方法中,我可以从 nib 加载 UIView 并将其分配给 VC 的 view。但我似乎不能只从笔尖加载视图控制器本身......?

感谢您的任何建议!

【问题讨论】:

    标签: uiviewcontroller nib swift-playground


    【解决方案1】:

    想通了。我必须将它作为 UINib 加载并从那里实例化视图控制器作为返回数组中的第一个对象:

    let nib = UINib(nibName: "vc", bundle: nil)
    let nibArray = nib.instantiate(withOwner: nil, options: nil)
    let vc = nibArray.first as! UIViewController
    PlaygroundPage.current.liveView = vc
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-08
      • 2023-03-26
      • 2014-09-11
      • 2013-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-07
      相关资源
      最近更新 更多