Программный доступ к подпредставлениям UIView, добавленным в Interface Builder.

StackOverflow https://stackoverflow.com/questions/667807

  •  21-08-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top