对不起,也许是noob问题,伙计们。我是iOS开发的新手。
如何创建在XIB中定义的视图控制器?
当您通过“新建文件”在Xcode中创建从UIViewController
继承的新类并标记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
答案 0 :(得分:7)
为每个UIViewController创建一个Xib
每个Xib都有File的Owner对象,您可以在那里设置UIViewController类。单击文件的所有者,然后在其类
上选择EmbeddedViewController然后将主UIView而不是UIViewController类拖到那里,然后将该视图与文件所有者挂钩作为视图。 UIViewController只是用来拖动到StoryBoard基础项目。
https://github.com/lequysang/gitfiles02/blob/master/SampleWithNib-master.zip
答案 1 :(得分:5)
在故事板项目的IB中存在这些控件。
答案 2 :(得分:2)
当您通过"新文件"创建带有xib的视图控制器时,Xcode会生成UIView
并自动将其与view
插座连接。好像你在Xcode生成xib文件后改变了一些东西。在这种情况下,您需要手动将视图连接到view
插座。
答案 3 :(得分:0)
如果您在xib.set中创建一个新视图,则该文件所有者将自定义为您的自定义类。 或者,如果您只是想创建一个视图。 然后
NSArray* test1 = [[NSBundle mainBundle] loadNibNamed:@"View" owner:self options:nil];
self.myViewFromNib = [test1 objectAtIndex:0];
myViewFromNib是您的视图对象,“View”是您的笔尖名称。