Программный доступ к подпредставлениям UIView добавлен в Интерфейсном Разработчике - PullRequest
0 голосов
/ 20 марта 2009

У меня есть файл пера, в котором у меня есть вид, содержащий фоновое изображение, кнопку и другое изображение, покрывающее весь экран (тень), которое необходимо переместить вперед. На виде я создаю дочерние виды, и после создания и добавления их с помощью [self addView] мне нужно переместить на передний план теневое изображение.

В настоящее время я использую атрибут tag, чтобы найти это представление, но я думаю, что, возможно, есть лучший способ, путем идентификации подпредставлений, которые я добавляю в Interface Builder по некоторому имени.

Я пытаюсь добавить IBOutlet, чтобы связать подпредставление с его родителем, но это не сработало (и не имело смысла, поскольку подпредставление каким-то образом уже связано с его родителем).

Ответы [ 4 ]

2 голосов
/ 20 марта 2009

Способ IBOutlets должен работать, и, вероятно, это лучший способ сделать это. Убедитесь, что вы установили правильное соединение в Интерфейсном Разработчике после того, как объявили их в файле .h.

1 голос
/ 21 марта 2009

iPhone выполняет ленивую загрузку контроллеров представления. Возможно, перо не было загружено в initWithCoder или какой-либо другой метод init, как указано в Kendall.

viewDidLoad является предпочтительным местом для доступа к чему-либо из пера, если вы хотите получить к ним доступ до отображения представления.

Надеюсь, это поможет.

0 голосов
/ 21 марта 2009

Использование тега - это совершенно правильный способ определения местоположения определенных представлений, если вы используете метод viewWithTag :. Если вы уже используете теги, вам не нужно переходить на IBOutlets, если вам просто не нравится вызов viewWithTag:.

0 голосов
/ 20 марта 2009

В какой момент вы пытаетесь получить доступ к подпредставлениям? Если вы попробуете в init ViewController, IBOutlets будет ноль. Первый метод, который вы можете использовать, это, вероятно, viewDidLoad.

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

...