ios - 以编程方式创建的 UIViewController 加载界面构建器 view.xib 文件

标签 ios uiviewcontroller xib

如何从以编程方式创建的 UIViewController 加载界面构建器创建的 View ?我正在使用 Objective-C。

我能够从一个不使用界面生成器的引用项目开始,所以我没有 Storyboard。我已成功以编程方式加载 View ,但希望能够加载一些由界面生成器创建的 View 。

更多详细信息:我有 2 个 View Controller A 和 B。我当前位于 A 中。我单击一个按钮,然后在该按钮处理程序中加载 View Controller B,如下所示:

self.viewControllerB = [[ViewControllerB alloc] init];
[self.navigationController pushViewController:viewControllerB animated:YES]

我手动创建了一个带有 .m 和 .h 的 ViewB。如果我使用 initWithFrame,其中定义了一堆控件并以编程方式布局它们,我可以按照上面的描述成功调用它。

我向项目添加了一个新文件,该文件是一个 UIView,它将在构建器中显示。将 TableView 拖放到 View 上,现在我只想查看此负载。 我将 xib 命名为 ViewB.xib,将类设置为 ViewB,如下图所示(在答案 1 中)

最佳答案

每当您需要从 .xib 加载 View 时,请使用以下命令:

首先在界面生成器中为 View 创建一个 Nib ,并确保将其自定义类设置为您的 View 类,请参见图片:

enter image description here

然后将其加载到您的代码中,如下所示:

MyCustomNibView *myView;
NSArray *topLevelItems = [[NSBundle mainBundle] loadNibNamed:@"MyCustomNibView" owner:nil options:nil];

for (id view in topLevelItems) {
    if ([view isKindOfClass:[MyCustomNibView class]]) {
       myView = (MyCustomNibView *)view;
       break;
    }
}

关于ios - 以编程方式创建的 UIViewController 加载界面构建器 view.xib 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12626570/

相关文章:

ios - iOS 8 中 self.view.subviews 为空

ios - Google VR Player SDK (GVR SDK) 默认以纸板模式启动?

html - 如何解析 HTML 以搜索特定内容的针

ios - 无法通过 RootViewController 评估对 View Controller 的 XCTest 引用

ios - 如何将 segue doing pop 设置为 root 并在 Storyboard 中推送一个新的?

ios - 如何在 xib 本地化之间切换

html - 如何禁止 unicode 黑色电话在 iOS 邮件应用程序上呈现为红色电话?

ios - 使用 FBSDKLoginkit 获取用户名和头像

ios - 即使设备在 objective-c 中水平旋转,如何始终以纵向模式加载 UIViewController?

iphone - 将两个不同的 Storyboard View Controller 连接到同一个类