Что такое коллекция ссылок в Xcode4 Interface Builder? - PullRequest
34 голосов
/ 11 июля 2011

enter image description here

Здесь я указал на Referencing Outlet Collection. Я не могу понять его использование в XCode4.

Я спрашиваю о `новой функции ОТСЧЕТА КОЛЛЕКЦИИ ВЫХОДА В InterfaceBuilder в XCode4".

Ответы [ 4 ]

57 голосов
/ 11 июля 2011

IBOutletCollection - это способ группировки IBOutlets. Представьте, что у вас есть 3 или 4 UILabels, к которым вы будете применять стиль (шрифт, backgroundColour, opacity и т. Д.). С IBOutletCollection это становится тривиально. Сначала вам нужно определить ваш IBOutletCollection:

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

(обратите внимание на тип, который мы помещаем в круглые скобки, хотя мы могли бы поставить id, если бы у нас был набор миксов)

Подключите IBoutlets в Интерфейсном Разработчике, а затем просто выполните итерацию:

for(UILabel *label in labelsCollection)
{
    // Apply your styles
}

Надеюсь, это поможет вам понять:

http://useyourloaf.com/blog/2011/3/28/interface-builder-outlet-collections.html

0 голосов
/ 18 ноября 2014
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
        }
0 голосов
/ 11 ноября 2014

Используя 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];
}
0 голосов
/ 10 мая 2012

Я только что взломал XIB.

Вы можете увидеть коллекцию Outlet в использовании здесь:

Элемент управления может иметь несколько распознавателей жестов, которые хранятся в:

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

Открыть IB

Перетащите UITextView в представление IB.

Перетащите Pinch Gesture Recognizer в текстовое представление.

Нажмите на каждое в дереве объектов и откройте Инспектор соединений.

вы увидите, что была добавлена ​​коллекция, а не одна розетка.

OUTLET COLLECTIONS

gestureRecognizers ------> Pinch Gesture
...