在视图中引用UIButton

时间:2012-03-26 09:12:35

标签: iphone ios xcode view controller

我从nib文件中加载了UIView。我写了一些方法,我能够连接到笔尖的First Responder。他们工作正常。

现在我必须引用加载视图中嵌入的UIButton。但由于它不是视图控制器/仅UIView(我猜?),File's Owner未检测到IBOutlet UIButton * button文件中的.h

那么这里发生了什么?谢谢!

4 个答案:

答案 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)

以下是如何完成的示例:

enter image description here

右键点击UIButton中的xib,点击引用点并将其拖至File's Owner。只要您发布了点击,就会出现一个弹出窗口,显示您可以连接该元素的所有IBOutlet

编辑 - 如果它没有变为蓝色,那么您还没有为File's Owner设置自定义类!你可以这样做,如下所示。单击File's Owner,然后单击第3个选项卡。将其设置为自定义视图控制器。

enter image description here

答案 3 :(得分:0)

在特定视图中分配和子视图按钮会很容易。 然后在.m类中定义动作动态,“View”可能会对您有用。

[btn addTarget:self action:@selector(action:) forControlEvents:UIControlEventTouchUpInside];