17

对不起,也许是菜鸟问题,伙计们。我是 iOS 开发的新手。

如何创建在 XIB 中定义的视图控制器?

UIViewController当您通过“新文件”创建从 Xcode 中继承的新类并标记with XIB复选框时,它会创建没有viewController元素的 xib 文件。而是它有placeholder哪些指向哪些在代码UIViewController中定义。

但我看到您可以在 Interface Builder 中创建控制器本身并为其指定 customClass。

不幸的是,它对我不起作用。我loaded the "EmbeddedViewController" nib but the view outlet was not set在运行时出错。但我相信view属性必须由资源加载器自动设置,因为一切都是通过 XIB 定义的。例如,它适用于 TableView 及其单元格。

您能否提供示例如何做到这一点?

我创建了示例项目:https ://github.com/cppexpert/SampleWithNib

有问题的控制器是EmbeddedViewController

4

4 回答 4

9

每个 UIViewController 创建一个 Xib

每个 Xib 都有 File 的 Owner 对象供您在那里设置 UIViewController 类。单击 File's Owner 并在其类上选择 EmbeddedViewController

然后将主 UIView 而不是 UIViewController 类拖到那里,然后将此视图与文件的所有者挂钩作为视图。UIViewController 仅用于拖动到 StoryBoard 基础项目。

https://github.com/lequysang/gitfiles02/blob/master/SampleWithNib-master.zip

于 2013-08-30T02:09:07.527 回答
5

事实证明这些控件存在于 IB 中用于 Storyboard 项目。

于 2013-09-06T05:39:42.437 回答
2

当您通过“新文件”使用 xib 创建视图控制器时,Xcode 会自动生成一个UIView并将其与view插座连接。好像你在 Xcode 生成 xib 文件后改变了一些东西。在这种情况下,您需要view手动将视图连接到插座。

于 2013-08-30T02:07:41.450 回答
0

如果您在 xib.set 中创建一个新视图,则将文件所有者设置为您的自定义类。或者,如果您只是想创建一个视图。然后

NSArray* test1 = [[NSBundle mainBundle] loadNibNamed:@"View" owner:self options:nil];
self.myViewFromNib = [test1 objectAtIndex:0];

其中 myViewFromNib 是您的视图对象,“View”是您的 nib 名称。

于 2013-08-30T05:52:16.487 回答