我刚刚设法以编程方式完成视图(没有界面构建器)。但现在我想知道我如何访问不同的元素,如UILabel或UISwitch等。在IB中我只是将它们连接到各自的出口/ ibactions。当我从代码创建视图时,我该怎么做?
答案 0 :(得分:1)
您的视图是自定义类,还是刚创建了UIView并为其添加了子视图?
如果您编写了自定义视图类,则可以使属性引用所有这些内容。然后,你可以yourView.aSwitch
(或任何你的财产被称为)来从控制器中引用它们。
如果你刚刚创建了一个UIView并添加了子视图,那么你可以做两件事。最好的选择是,在你创建开关的地方(或其他),保持对它的引用,可能在你的控制器类的实例变量中。因此你可能会这样做
UIView *aView = [[UIView alloc] initWithRect:aRect];
UISwitch *switch = [[UISwitch alloc] init];
[aView addSubview:switch];
// your variable 'switch' is a reference to the switch.
// Assign it to an instance variable of your controller class here.
你能做到的另一种方式(并不是真的推荐这个)就是遍历视图的子视图,直到找到你想要的视图。 UIView的subviews
属性为您提供了一组数组。
答案 1 :(得分:0)
如果您在代码中创建它们,则可以保留对您创建的对象的引用。例如,通过创建属性(非原子,通常保留)并在创建对象时设置它。
答案 2 :(得分:0)
那么,您是否也以编程方式创建了视图内容?如果是这样,您需要做的就是保持对每个元素的引用。一旦你创建了一个新的UI元素,只需将它分配给一些准备好的属性,就可以用编程替代将IB中的元素连接到实例变量/属性。