自定义UIView与Nib(.xib)的子视图不加载?

时间:2013-10-02 13:17:43

标签: ios objective-c uiview xib nib

我正在尝试使用关联的Nib(.xib)文件创建自定义UIView类,以帮助进行布局和创建。

现在,我的自定义视图中没有子视图显示,即使它们存在于我的nib文件中,并通过IBOutlets正确连接到我的自定义视图类。

我尝试了以下其他答案: Load custom UIView with XIB from a View Controller's view using IB

这一个: How do I get a view in Interface Builder to load a custom view in another nib?

这一个: http://soulwithmobiletechnology.blogspot.com/2011/06/create-uiview-with-nib-file-in-xcode-4.html

但方法[[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil]似乎调用-[initWithCoder:],导致无限循环。

请告诉我其他详细信息,以帮助解决此错误!

更新1:我是否需要通过-[layoutSubviews]列出我的子视图?我的nib文件实际上没有列出来吗?如果是这样,那么nib文件的重点是什么?

1 个答案:

答案 0 :(得分:4)

打开任何视图控制器并将此代码粘贴到viewDidAppear方法中:

NSArray * allTheViewsInMyNIB = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil]; // loading nib (might contain more than one view)
MyCustomView* problemView = allTheViewsInMyNIB[0]; // getting desired view
problemView.frame = CGRectMake(0,0,100,100); //setting the frame
[self.view addSubview:problemView]; // showing it to user

这就是你所要做的,提出一个观点。如果您想与此视图进行交互,则必须在类的界面中声明MyCustomView* problemView,而不是在方法中。