4

我有我的当前iPhone应用程序的顶部列表视图,这是由代码填充。我使用Interface Builder组装了视图,因此它包含很多UILabel s。是否可以使用类似IBOutlet数组的东西?

很显然,我不希望在我的课name1name2等网点,但更喜欢name[10]阵列。

是否有可能这样做,并将每个项目连接到适当的标签(或任何其他接口生成器,如视图)?

回答

0

你不能在IB中完成它,但是你可以在你的init方法中创建一个数组并将所有标签添加到它。

顺便说一句,您可以为每个标签设置一些标签并定义宏来访问它。水木清华像

#define NAME[TAG] (UILabel*)[self.view viewWithTag:TAG] 
22

你当然可以使用界面制作工具,关键字是IBOutletCollection。它所做的基本上是一个NSArray,它是由多个接口构建器插座组成的。

IBOutletCollection(UILabel) NSArray *myLabels; 

所以接下来的事情将在Interface Builder来连接您的标签,然后你可以使用数组在运行时可以访问所有的标签。

+0

这必须是在界面生成器和Xcode中的一项新功能,是不是? – shinjin 2011-01-13 12:06:58

+0

@Shinjin:当这个功能可用时,我无法给你确切的日期或发布,但我知道它现在有一段时间了(至少一岁)。 – JustSid 2011-01-13 12:43:06

+0

我在其他地方看过这是从iOS 4开始添加的。但是,您不能依赖IBOutlets的顺序(或者不能;不确定它是否已被iOS 8修复)。 – ultrageek 2015-04-20 08:57:00

0

按照以下步骤来创建出口数组的它与IB元素连接(这里是举例UIView,您可以使用UILabel也):

  • 创建一个数组IBOutlets的
  • 添加多个UI元素(视图)
  • 选择ViewController(在故事板)并打开连接检查器
  • 在连接检查器中有选项'出口集合'(您会看到一个数组网点有)
  • 连接,如果你的界面元素

-

class ViewController2: UIViewController { 


    @IBOutlet var collection:[UIView]! 


    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 
} 

enter image description here

相关问题