Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UIView应该如何获取对其子对象的引用?_Iphone_Cocoa Touch_Ios5_Uiview_Children - Fatal编程技术网

Iphone UIView应该如何获取对其子对象的引用?

Iphone UIView应该如何获取对其子对象的引用?,iphone,cocoa-touch,ios5,uiview,children,Iphone,Cocoa Touch,Ios5,Uiview,Children,我有一个具有根视图的xib,它是UIView子类。该视图应该如何获取对我在Interface Builder中声明的子视图的引用 显然,ViewController可以与插座连接,但UIView呢?试试[view-viewWithTag:tagOfChildView]出口是UIViewController对象的属性,它(几乎总是)引用UIView对象(或UIView的子类)的实例 UIViewController有一个UIView,当UIViewController加载了initWithNibN

我有一个具有根视图的xib,它是UIView子类。该视图应该如何获取对我在Interface Builder中声明的子视图的引用


显然,ViewController可以与插座连接,但UIView呢?

试试
[view-viewWithTag:tagOfChildView]

出口是UIViewController对象的属性,它(几乎总是)引用UIView对象(或UIView的子类)的实例

UIViewController有一个UIView,当UIViewController加载了
initWithNibNamed:
时,它是XIB文件的内容。您可以在UIViewController中设置输出,然后通过拖动到列表中的“文件所有者”项,或通过拖动到Xcode的助理编辑器中的代码,将它们绑定到XIB中的各个子视图

如果只想使用代码,有几个选项。一种方法是根据视图的
标记
属性直接访问视图。例如:

[myView viewWithTag:42];

另一种考虑的方法是UIVIEW有一个名为<代码>子视图< /C>的属性,它是一个子视图数组。您可以遍历它们,并根据需要访问视图。要区分它们,您可以根据情况做几件事。可以在视图上设置标记,只需使用这些标记即可

NSArray *subviews = myView.subviews;

for(UIView *view in subviews){
  if(tag == 42){
    // Do something with that view
  }
}
或者,如果您正在寻找一种特定类型的视图,例如UISwitch,类似这样的东西在简单的情况下可能会起作用:

for(id view in subviews){
  if([view isKindOfClass:NSClassFromString(@"UISwitch")]){
    // Do something with that view, since it's a switch 

  }
}

如果您使用的是标记,则可以在代码中设置它们,或者使用Interface Builder

优秀而全面的回答。我在迭代和检查类,但使用标记要干净得多。谢谢