ios - 用 XIB 替换 Storyboard

标签 ios xcode interface-builder xcode4.3

如何用 XIB 替换 Storyboard?

在尝试动态创建 View 及其 Controller 时,我失去了新 Storyboard的所有优势。现在,在尝试将其从项目中删除时,我创建了一个带有自己 Controller 的新 XIB,并在项目设置中替换了它:
enter image description here
现在,当尝试运行该应用程序时,它崩溃了,日志显示以下内容:

2012-04-08 14:50:16.567 Bazaart[11340:15203] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIApplication 0x8c15c20> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key view.'

这是 UIRootWindow 的代码:

#import <UIKit/UIKit.h>
@interface UIRootWindow : UIViewController
@end

及其对应的实现:

#import "UIRootWindow.h"
@implementation UIRootWindow

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    return self;
}
- (void)viewDidLoad {
    [super viewDidLoad];
}
- (void)viewDidUnload {
    [super viewDidUnload];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return YES;
}
@end

编辑:
我有 Phillip 建议的窗口(见下文)。但是......我做的方式似乎不是最好的。我做得对吗?

UIRootWindow *wnd = [[UIRootWindow alloc] init];
[wnd view];
[self setWindow:wnd.window];

最佳答案

不要在主界面字段中输入任何内容。相反,在应用委托(delegate)的 didFinishLaunchingWithOptions: 方法中加载您的顶级 Controller ,并在那里设置窗口的根 Controller 。

应用程序启动假定那里提到的 xib 有一个文件所有者是一个 UIApplication。 (旧模板曾经这样做,一些示例项目仍然这样做。)

关于ios - 用 XIB 替换 Storyboard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10062716/

相关文章:

c++ - Objective C 框架不导出某些类

ios - 从命令行运行单元测试时的 SSL 连接问题

ios - xcode - 表格 View 下的进度条

ios - 测量在 Xcode 中渲染 UIView 的 CPU 使用率

iphone - 如何从带有占位符的 NIB 加载 UIViewController?

ios - NSLayoutConstraints 可以用十进制常量渲染吗?

ios - 如何下载 Vuforia 应用程序的数据集?

ios - UIApplication.sharedApplication().setStatusBarStyle() 已在 iOS 9 中弃用

ios - 高分记忆不工作 Xcode

ios - 添加 subview 以编程方式奇怪地定位它们