iPhone: доступ к объектам представления из ViewController в коде - PullRequest
0 голосов
/ 23 октября 2009

Допустим, у меня есть ViewController, которому нужен доступ к представлению. В файле класса ViewController я делаю

IBOutlet ViewA *someview;

А в Интерфейсном Разработчике я перетаскиваю UIView в своем документе и устанавливаю класс ViewA.

Мне не хватает того, как создается экземпляр "вещи", когда вы подключаетесь через IB. ViewA автоматически выделяется при разархивировании файлов .xib? Что если я не хочу использовать IB?

1 Ответ

1 голос
/ 23 октября 2009

Если вы не хотите использовать IB, вместо того, чтобы поместить этот IBOutlet туда, вы просто устраняете его, оставляя только

ViewA *someview;

и затем где-нибудь в вашем коде, когда вам нужно представление, вы делаете

someView = [[UIView alloc] initWithFrame: rect];

Я предпочитаю IB, другие предпочитают программно создавать представления. Мне нравится, как я могу расположить все подвиды представлений, включая UIButtons, UILabels, UITableViews, другие UIViews и т. Д., Не используя для этого координаты. YMMV.

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

if (someview) {
  // the view is loaded now
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...