Можно ли использовать что-то вроде массива IBOutlet? - PullRequest
4 голосов
/ 17 декабря 2009

У меня есть вид сверху списка в моем текущем приложении для iPhone, который заполнен кодом. Я собрал представление, используя Интерфейсный Разработчик, таким образом, оно содержит много UILabel s.

Очевидно, я не хотел бы иметь в своем классе розетки name1, name2 и т. Д., Но предпочел бы массив name[10].

Возможно ли это сделать и подключить каждый элемент к соответствующей метке (или любому другому конструктору интерфейса, например view)?

Ответы [ 4 ]

22 голосов
/ 12 января 2011

Конечно, вы можете сделать это с помощью построителя интерфейса, ключевое слово - IBOutletCollection. То, что он делает, это в основном NSArray из нескольких точек построения интерфейса.

IBOutletCollection(UILabel) NSArray *myLabels;

Таким образом, следующим шагом будет подключение ваших меток в конструкторе интерфейсов, после чего вы сможете использовать массив для доступа ко всем меткам во время выполнения.

0 голосов
/ 26 октября 2017

Выполните следующие шаги, чтобы создать массив выходов и связать его с IB Elements (Вот пример UIView, вы также можете использовать UILabel):

  • Создать массив IBOutlets
  • Добавление нескольких UIElements (Views) в интерфейс Storyboard ViewController
  • Выберите ViewController (в раскадровке) и откройте инспектор соединений
  • В инспекторе соединений есть опция 'Коллекции розеток' (там вы увидите массив розеток)
  • Соединитесь, если с вашими элементами интерфейса

-

class ViewController2: UIViewController {


    @IBOutlet var collection:[UIView]!


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

enter image description here

0 голосов
/ 12 января 2011

Это можно сделать с помощью коллекций розеток, см. этот связанный вопрос .

0 голосов
/ 17 декабря 2009

вы не можете сделать это в IB, но вы можете создать массив в вашем методе init и добавить к нему все ваши метки.

Кстати, вы можете установить некоторые метки для каждой метки и определить макрос для доступа к ней. что-то вроде

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