什么是Xcode Interface Builder中的引用插座集合?

时间:2011-07-11 11:26:48

标签: ios iphone xcode4 interface-builder iboutletcollection

enter image description here

在这里,我指出了Referencing Outlet Collection。我无法弄清楚它在XCode4中的用法。

我要求在XCode4的InterfaceBuilder中提供“REFERENCING OUTLET COLLECTION的新功能”。

4 个答案:

答案 0 :(得分:57)

IBOutletCollection是一种分组IBOutlets的方式。想象一下,您有3个或4个UILabels,您将在其上应用样式(字体,backgroundColour,不透明度等)。使用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

答案 1 :(得分:0)

我刚刚攻击了XIB。

您可以在此处查看正在使用的Outlet集合:

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

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

打开IB

将UITextView拖到IB视图。

将Pinch Gesture识别器拖到文本视图中。

单击对象树中的每个对象,然后打开Connections Inspector。

你会看到它被添加了一个集合,而不是一个插座。

OUTLET COLLECTIONS

gestureRecognizers ------> Pinch Gesture

答案 2 :(得分:0)

使用XCode Interface Builder创建/连接您的IBOutlets到IBOutlet集合。因此,您将在.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];
}

答案 3 :(得分:-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
        }