我有我的当前iPhone应用程序的顶部列表视图,这是由代码填充。我使用Interface Builder组装了视图,因此它包含很多UILabel
s。是否可以使用类似IBOutlet数组的东西?
很显然,我不希望在我的课name1
,name2
等网点,但更喜欢name[10]
阵列。
是否有可能这样做,并将每个项目连接到适当的标签(或任何其他接口生成器,如视图)?
我有我的当前iPhone应用程序的顶部列表视图,这是由代码填充。我使用Interface Builder组装了视图,因此它包含很多UILabel
s。是否可以使用类似IBOutlet数组的东西?
很显然,我不希望在我的课name1
,name2
等网点,但更喜欢name[10]
阵列。
是否有可能这样做,并将每个项目连接到适当的标签(或任何其他接口生成器,如视图)?
你不能在IB中完成它,但是你可以在你的init
方法中创建一个数组并将所有标签添加到它。
顺便说一句,您可以为每个标签设置一些标签并定义宏来访问它。水木清华像
#define NAME[TAG] (UILabel*)[self.view viewWithTag:TAG]
这可以通过出口集合来完成,见this related question。
你当然可以使用界面制作工具,关键字是IBOutletCollection
。它所做的基本上是一个NSArray,它是由多个接口构建器插座组成的。
IBOutletCollection(UILabel) NSArray *myLabels;
所以接下来的事情将在Interface Builder来连接您的标签,然后你可以使用数组在运行时可以访问所有的标签。
按照以下步骤来创建出口数组的它与IB元素连接(这里是举例UIView
,您可以使用UILabel
也):
-
class ViewController2: UIViewController {
@IBOutlet var collection:[UIView]!
override func viewDidLoad() {
super.viewDidLoad()
}
}
这必须是在界面生成器和Xcode中的一项新功能,是不是? – shinjin 2011-01-13 12:06:58
@Shinjin:当这个功能可用时,我无法给你确切的日期或发布,但我知道它现在有一段时间了(至少一岁)。 – JustSid 2011-01-13 12:43:06
我在其他地方看过这是从iOS 4开始添加的。但是,您不能依赖IBOutlets的顺序(或者不能;不确定它是否已被iOS 8修复)。 – ultrageek 2015-04-20 08:57:00