如何以编程方式创建视图中的控制器项?

问题描述 投票:0回答:3

我刚刚成功地以编程方式创建了一个视图(没有界面构建器)。但现在我想知道我如何访问不同的元素,如UILabel或UISwitch等。在IB中,我只是将它们连接到各自的出口/ ibactions。当我从代码创建视图时,我该怎么做?

iphone objective-c ios
3个回答
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属性为您提供了一系列的属性。


0
投票

如果您在代码中创建它们,则可以保留对您创建的对象的引用。例如,通过创建属性(非原子,通常保留)并在创建对象时设置它。


0
投票

那么,你是否也以编程方式创建了视图内容?如果是这样,您需要做的就是保持对每个元素的引用。一旦创建了新的UI元素,只需将其分配给一些准备好的属性,就是将IB中的元素连接到实例变量/属性的编程替代。

© www.soinside.com 2019 - 2024. All rights reserved.