我有一个自定义UIView
子类让我们称之为CustomViewA
,我用initWithFrame:
初始化,并以编程方式添加一些UIViews(如UILabel等)。现在需要将另一个视图添加到CustomViewA
,所以我创建了一个nib
,我在其中布置了一些GUI元素(一个是UISegmentedControl
)
现在我遇到了一些关于如何将此笔尖正确添加为CustomViewA
子视图的问题。我是否需要为笔尖创建.h / .m文件?我希望CustomViewA在分段控件更改值时接收操作。
答案 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
框架之外。显然,当子视图位于超视图的框架之外时,它不会拦截触摸。