我正在使用Xcode 8和Swift,而不是使用Storyboard。
我点击Add-> Cocoa Touch Class并选中该框以生成XIB。
我现在有FooViewController.swift和FooViewController.xib。 xib具有在文件所有者下设置的类。据我所知,这是XIB和班级之间的唯一关联。生成的类不包含任何加载XIB的内容。
我可以像这样创建和显示这个视图控制器(来自其他一些ViewController):
let foo = FooViewController();
self.navigationController!.pushViewController(foo, animated: true);
这很有效,它可以加载UI。我不明白的是为什么。大多数在线指南和教程都表明ViewController需要手动加载XIB。
答案 0 :(得分:0)
从我们用于创建通用应用程序的Xcode 4.5中的那一天开始,即 对
AppDelegate Class中的didFinishLaunchingWithOptions
中曾经存在代码,用于为目标设备加载不同的XIB,因此它的行为与您上面提到的相同。但鉴于Xcode和Cocoa Framework的发展。它已经走了很长的路,编译器会自动为我们做很多事情。
此特定情况:
UINib
并加载它super.viewDidLoad()
的同时创建程序化视图
一旦找不到任何内容,它就会为同一个视图控制器生成一个空白视图。如果我们仔细查看XIB文件,可以在XIB中找到附带主视图的视图插座,但是我们没有创建这样的插座,因此它将VC Source文件的自动生成插座与XIB中的视图连接起来。如果有意义的话。
另请参阅下面的代码以供tableView上下文参考:
let newAccountTableCellNib:UINib = UINib(nibName: "AccountTableCell", bundle: nil)
tableView.registerNib(self.newAccountTableCellNib, forCellReuseIdentifier: "AccountTableCell")
这应该可以解决您的疑问。干杯!!