2013-07-04 2 views
1

Я создаю интерфейс в интерфейсе Builder и ищу простейший (наименьший код) способ идентифицировать элемент из кода.Простейший способ идентифицировать элемент интерфейса Builder в коде

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

В идеале я просто хочу посмотреть объект по его идентификатору, как я могу сделать в JavaScript:

document.getElementById('myIdentifier'); 
+2

Розетки - это путь. Если вы не хотите, чтобы свойства были ~ public ~, объявите их в категории в файле '.m', например: https://gist.github.com/rightfold/5924047. –

+0

@ rightfold Сильная типизация торговых точек, по общему признанию, хороша. – devios1

ответ

1

Я согласен с rightfold, что выходы являются лучшим решением, но есть ответ, который обращается на ваш вопрос напрямую: вы можете использовать свойство (integer) tagUIView (устанавливая его либо в IB, либо в коде), а затем вы можете получить представление с помощью метода UIView -viewWithTag:.

Последовательные вызовы -viewWithTag: будут проходить через подпункты, имеющие данный тег. Поскольку это целое число, вы, вероятно, захотите использовать именованные константы для ссылок на теги в коде, но, к сожалению, нет способа (что я знаю) использовать константы таким образом в IB.

Значение по умолчанию для свойства tag равно 0, поэтому не используйте его как семантически значимый тег.

+0

Я посмотрел на это и с удивлением обнаружил, что тег - это всего лишь числовое поле, которое, похоже, было бы нецелесообразно полагаться на него для идентификации элементов. – devios1