Организация тегов с помощью Interface Builder

Я довольно новичок в Interface Builder (я использую RubyMotion, кстати), и хотел бы посмотреть, как другие организуют свои теги представления. У меня есть много компонентов представления, которые действительно должны быть сгруппированы вместе, например, UILabel поверх UIView.

Мои первоначальные мысли заключаются в том, чтобы иметь единую функцию, которая заботится обо всем сопоставлении тегов представления с объектами представления. Что-то вроде этого:

def mapTags
  @awesomeButton = AwesomeButton.new(
    :view => view.viewWithTag 1,
    :label => view.viewWithTag 2
  )
end

def viewDidLoad
  self.mapTags
end

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


person user94154    schedule 04.09.2012    source источник


Ответы (1)


хорошо, если вам нужно пометить все ваши представления, и у вас их много, я предлагаю вам делать это всякий раз, когда вы инициализируете представление, а не разделяете его в функции, это самый безопасный способ. В target-c я обычно создаю определенные макросы для каждого тега, а затем всякий раз, когда я инициализирую представление, я назначаю макрос для этого тега, например:

#define kMyFirstViewTag 2
#define kMyLabelTag     3

...

[myFirstView setTag:kMyFirstViewTag];

Таким образом, вы можете сгруппировать определенные представления по имени (kMyGroup1LabelTag) и легко получить к ним доступ по имени тега.

Я не очень разбираюсь в рубине, но я уверен, что должен быть способ добиться того же результата.

Надеюсь, этот ответ будет полезен.

person KDaker    schedule 04.09.2012
comment
Я ценю ответ. По сути, это то, что я делаю с Ruby. Думаю, я хотел бы, чтобы Interface Builder не ограничивал имена тегов только целыми числами — тогда я мог бы называть свои элементы в IB. Итак, для группировки нет способа выразить в IB, что два элемента принадлежат друг другу? Эта часть должна быть полностью выполнена в коде? - person user94154; 04.09.2012
comment
хорошо, что в IB нет такой вещи, как «группировка». Я не знаю точно, что вы пытаетесь сделать, но если у вас есть UIView, встроенные как subviews в родительский UIView, они каким-то образом сгруппированы. Конечно, я бы не стал делать это только ради «группировки». Если это просто для направления и организации вещей, то я бы сказал, что у вас есть только теги имен. - person KDaker; 04.09.2012