自定义UIView子类添加nib子视图

时间:2014-06-04 13:39:27

标签: ios xcode uiview xib nib

我有一个自定义UIView子类让我们称之为CustomViewA,我用initWithFrame:初始化,并以编程方式添加一些UIViews(如UILabel等)。现在需要将另一个视图添加到CustomViewA,所以我创建了一个nib,我在其中布置了一些GUI元素(一个是UISegmentedControl

现在我遇到了一些关于如何将此笔尖正确添加为CustomViewA子视图的问题。我是否需要为笔尖创建.h / .m文件?我希望CustomViewA在分段控件更改值时接收操作。

3 个答案:

答案 0 :(得分:1)

我是否需要为笔尖创建.h / .m文件?

不,你不需要。

如何在分段控件更改值时接收操作?

您可以在xib中为分段控件设置标签号,它应该在xib视图的所有子视图中都是唯一的。

您可以使用代码获取分段控件。 UISegmentedControl *segmentedControl = (UISegmentedControl *)[view viewWithTag:1024];,一旦获得分段控件,就可以使用代码[segmentedControl addTarget:self action:@selector(action:) forControlEvents:UIControlEventValueChanged];

添加操作

编辑:如何获取xib的根视图?

使用以下代码:

UIView *rootView = [[[NSBundle mainBundle] loadNibNamed:@"YourXibName" owner:nil options:nil] firstObject];

答案 1 :(得分:0)

[[NSBundle mainBundle] loadNibNamed:@"MyNibName" owner:self options:nil];
[self.view addSubview:self.nibView];

在笔尖中,确保将文件所有者的类设置为要将其添加到的视图控制器。

您也可以在笔尖中添加属性和IBActions一样正常。

答案 2 :(得分:0)

我终于弄清楚发生了什么。我添加到CustomViewA的笔尖已添加到CustomViewA框架之外。显然,当子视图位于超视图的框架之外时,它不会拦截触摸。