什么是Xcode4界面构建器中的引用输出集合?

36

enter image description here

这里,我指向了“引用插座集合”。我无法弄清它在XCode4中的用途。
我正在询问XCode4 InterfaceBuilder中“引用插座集合”的新功能。
4个回答

59

IBOutletCollection 是一种将 IBOutlets 分组的方式。想象一下,您有 3 或 4 个 UILabels,需要对其应用样式(字体、背景颜色、不透明度等)。使用 IBOutletCollection,这变得非常简单。首先,您需要定义您的 IBOutletCollection

@property (nonatomic, retain) IBOutletCollection(UILabel) NSArray *labelsCollection;

(注意我们将放置在括号内的类型,虽然如果我们有混合集合,我们可以放置一个id

在 Interface Builder 上连接 IBoutlets 然后进行迭代:

for(UILabel *label in labelsCollection)
{
    // Apply your styles
}
希望这能帮助您理解: http://useyourloaf.com/blog/2011/3/28/interface-builder-outlet-collections.html

0

使用XCode Interface Builder创建/连接您的IBOutlets到IBOutlet Collection。结果,您将在.h文件中获得以下代码:

@property (strong, nonatomic) IBOutletCollection(UILabel) NSArray *labels;

在 .m 文件中,您可以使用 for 循环迭代来获取所需的特性,例如字体大小或颜色:
for (UILabel *label in self.labels) {
        label.font = [UIFont systemFontOfSize:14];
        label.textColor=[UIColor blueColor];
}

或者

@synthesize labels;
...
for (UILabel *label in labels) {
        label.font = [UIFont systemFontOfSize:14];
        label.textColor=[UIColor blueColor];
}

0

我刚刚在操作XIB文件。

你可以在这里看到Outlet collection的使用:

一个控件可以有多个手势识别器,它们存储在:

UITouch 
@property(nonatomic,readonly,copy) NSArray *gestureRecognizers

打开 IB。

将 UITextView 拖到 IB 视图中。

将 Pinch Gesture Recognizer 拖到文本视图中。

单击对象树中的每个对象并打开连接检查器。

您会看到它已经添加了一个集合,而不是单个输出口。

OUTLET COLLECTIONS

gestureRecognizers ------> Pinch Gesture

-1
swift: 

 // create outlet colllections
 @IBOutlet var name: [UILabel]!
    @IBOutlet var ageLabel: [UILabel]!
    @IBOutlet var genderLabel: [UILabel]!
    @IBOutlet var weightLabel: [UILabel]!
    @IBOutlet var heightLabel: [UILabel]!
    @IBOutlet var bmiLabel: [UILabel]!
    @IBOutlet var smokerLabel: [UILabel]!
    @IBOutlet var hdraLabel: [UILabel]!

// declare global vars
  var names: UILabel;
    var ageLabels: UILabel;
    var genderLabels: UILabel;
    var weightLabels: UILabel;
    var heightLabels: UILabel;
    var bmiLabels: UILabel;
    var smokerLabels: UILabel;
    var hdraLabels: UILabel;

// assign values
  for name:UILabel in self.name {
            self.names = name
        }

        for ageLabel:UILabel in self.ageLabel {
            self.ageLabels = ageLabel
        }

        for genderLabel:UILabel in self.genderLabel {
            self.genderLabels = genderLabel
        }

        for weightLabel:UILabel in self.weightLabel {
            self.weightLabels = weightLabel
        }

        for heightLabel:UILabel in self.heightLabel {
            self.heightLabels = heightLabel
        }

        for bmiLabel:UILabel in self.bmiLabel {
            self.bmiLabels = bmiLabel
        }

        for smokerLabel:UILabel in self.smokerLabel {
            self.smokerLabels = smokerLabel
        }

        for hdraLabel:UILabel in self.hdraLabel {
            self.hdraLabels = hdraLabel
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接