因为我什至无法与 Storyboard成功合并,我正在尝试切换到 xib 文件。我正在尝试像在 Storyboard中那样将一个 xib 文件设置为 initialViewController,因此首先我在 Storyboard中禁用了该属性。根据谷歌的一些例子,我做了一个应该返回 xib 文件的扩展:
extension UIViewController {
class func loadFromNibNamed(nibNamed: String, bundle : NSBundle? = nil) -> UIViewController? {
return UINib(
nibName: nibNamed,
bundle: bundle
).instantiateWithOwner(nil, options: nil)[0] as? UIViewController
}
然后从应用程序委托(delegate)调用该类函数并尝试将 xib 文件加载为 Root View Controller ,如下所示:
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
let mainView = UIViewController.loadFromNibNamed("MainView")
//window?.addSubview(mainView!)
self.window?.rootViewController = mainView
return true
}
我的xib文件名是MainView.xib,上面有一个UIView和一个MainViewController,MainViewController继承自ViewController,还是空的:
无论我尝试什么,我总是得到相同的错误信息:
Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' - perhaps the designated entry point is not set?
最佳答案
您仍将项目设置为使用 Main.storyboard 文件。在项目/常规选项卡中,您需要清除此部分:
如果这样做,您还需要自己创建 UIWindow 并设置应用委托(delegate)的 window
属性,因为如果您不使用 Storyboard ,则不会创建它。参见 How to create an Empty Application in Xcode 6 without Storyboard了解详情。
关于ios - 如何将 xib 文件设置为 initialViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37207468/