我从nib文件中加载了UIView
。我写了一些方法,我能够连接到笔尖的First Responder
。他们工作正常。
现在我必须引用加载视图中嵌入的UIButton
。但由于它不是视图控制器/仅UIView
(我猜?),File's Owner
未检测到IBOutlet UIButton * button
文件中的.h
。
那么这里发生了什么?谢谢!
答案 0 :(得分:1)
有几种方法可以做到这一点......其中一种是......
在界面构建器中设置buttons标签属性,然后在代码中循环浏览所有子视图,查找包含您设置的标签的视图
..没有测试过,但它应该是
for (UIView *subView in [view subviews]) {
if (subView.tag == <YOUR TAG HERE>) {
UIButton *button = (UIButton *)subView;
}
}
..我将它包装在一个名为getSubviewWithTag的函数中,以便您可以在其他地方重用它
答案 1 :(得分:1)
在Interface Builder中拖动连接时,不必始终连接到“文件所有者”。从UIButton中拖动,然后放在包含它的UIView上。如果它在您自定义的UIView类上有一个IBOutlet UIButton属性 - 它将连接起来。
答案 2 :(得分:1)
以下是如何完成的示例:
右键点击UIButton
中的xib
,点击引用点并将其拖至File's Owner
。只要您发布了点击,就会出现一个弹出窗口,显示您可以连接该元素的所有IBOutlet
。
编辑 - 如果它没有变为蓝色,那么您还没有为File's Owner
设置自定义类!你可以这样做,如下所示。单击File's Owner
,然后单击第3个选项卡。将其设置为自定义视图控制器。
答案 3 :(得分:0)
在特定视图中分配和子视图按钮会很容易。 然后在.m类中定义动作动态,“View”可能会对您有用。
[btn addTarget:self action:@selector(action:) forControlEvents:UIControlEventTouchUpInside];