【发布时间】:2011-10-02 17:25:02
【问题描述】:
这里,我指的是Referencing Outlet Collection。我无法弄清楚它在 XCode4 中的用法。
我要求在 XCode4 的 InterfaceBuilder 中提供 REFERENCING OUTLET COLLECTION 的新功能。
【问题讨论】:
标签: ios iphone xcode4 interface-builder iboutletcollection
这里,我指的是Referencing Outlet Collection。我无法弄清楚它在 XCode4 中的用法。
我要求在 XCode4 的 InterfaceBuilder 中提供 REFERENCING OUTLET COLLECTION 的新功能。
【问题讨论】:
标签: ios iphone xcode4 interface-builder iboutletcollection
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
【讨论】:
我刚刚破解了 XIB。
您可以在此处查看正在使用的 Outlet 集合:
一个控件可以有多个手势识别器,它们存储在:
UITouch
@property(nonatomic,readonly,copy) NSArray *gestureRecognizers
打开 IB
将 UITextView 拖到 IB 视图中。
将捏合手势识别器拖到文本视图中。
单击对象树中的每个对象并打开连接检查器。
你会看到它被添加了一个集合,而不是一个单一的出口。
OUTLET COLLECTIONS
gestureRecognizers ------> Pinch Gesture
【讨论】:
使用 XCode Interface Builder 创建/连接您的 IBOutlet 到 IBOutlet 集合。结果,您将在 .h 文件中获得以下代码:
@property (strong, nonatomic) IBOutletCollection(UILabel) NSArray *labels;
在 .m 文件中,您可以使用 for-loop 进行迭代以获得所需的功能,例如字体大小或颜色:
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];
}
【讨论】:
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
}
【讨论】: