无法使用 .xib 文件将子视图加载到故事板
fail to load subview to storyboard using .xib file
最近在研究"iOS 12 Programming Fundamentals with Swift"这本书。在 "manual Nib Loading" 部分下,读者应该能够使用 .xib 文件加载 nib。我遵循了三个步骤:加载 nib(即 .xib 文件),获取它在加载时创建的实例,并对这些实例执行某些操作。但是我看不到 运行 应用程序界面中显示的设计视图。为什么会这样?
p.s。 .xib 文件的名称是 View.xib。
ViewController.swift
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let arr = Bundle.main.loadNibNamed("View", owner: nil)!
let v = arr[0] as! UIView
self.view.addSubview(v)
}
}
尝试
let view = Bundle.main.loadNibNamed("View", owner: nil, options: nil)?[0] as! UIView
self.view.addSubview(view);
我找到加载.xib文件失败的原因了。在 Main.storyboard 中,在身份检查器的自定义 Class 下,我应该将 Class 值设置为用于实例化视图控制器的 .swift 文件的名称, "ViewController", 而不是默认值 "UIViewController".
最近在研究"iOS 12 Programming Fundamentals with Swift"这本书。在 "manual Nib Loading" 部分下,读者应该能够使用 .xib 文件加载 nib。我遵循了三个步骤:加载 nib(即 .xib 文件),获取它在加载时创建的实例,并对这些实例执行某些操作。但是我看不到 运行 应用程序界面中显示的设计视图。为什么会这样?
p.s。 .xib 文件的名称是 View.xib。
ViewController.swift
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let arr = Bundle.main.loadNibNamed("View", owner: nil)!
let v = arr[0] as! UIView
self.view.addSubview(v)
}
}
尝试
let view = Bundle.main.loadNibNamed("View", owner: nil, options: nil)?[0] as! UIView
self.view.addSubview(view);
我找到加载.xib文件失败的原因了。在 Main.storyboard 中,在身份检查器的自定义 Class 下,我应该将 Class 值设置为用于实例化视图控制器的 .swift 文件的名称, "ViewController", 而不是默认值 "UIViewController".