0

Многое из того, что я прочитал, рассказывает о преимуществах настройки вашего интерфейса в IB. И как, когда ниб «проснулся», все объекты в нем «оживают».Восстанавливать объекты из ниба - Просто добавить воду? возможно, не

Я экспериментирую с размещением около 10 объектов UIView в наконечник, который принадлежит ViewController. Объекты UIView имеют тип MyView и подключаются обратно к их соответствующим свойствам в ViewController. MyView является подклассом UIView с дополнительными свойствами, такими как UIImage * image & NSNumber * значение.

Ящик явно загружается, так как я вижу некоторые другие элементы UIImageView, которые также находятся в наконечнике. Но когда я пытаюсь установить свойство в одном из 10 объектов MyView, я не могу. И в отладчике мои свойства для этих объектов все равно 0x0.

У меня также создалось впечатление, что метод initWithCoder в моем классе MyView будет срабатывать, поскольку каждый из этих 10 объектов проснулся от сна, поэтому я мог бы установить некоторые свойства во время выполнения?!?

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

ответ

2

viewDidLoad - это первый метод, когда все объекты в вашем представлении созданы. initWithCoder вызывается перед любым из них.

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

+0

Argh. У меня был весь мой код в initWithCoder ... Я буду тестировать его в viewDidLoad завтра и отчитываться ... не понял разницы. Думал, что кодер был для ножей ... похоже, что это было для новичков ... – Meltemi

+0

Кодер предназначен для наконечников, но он предназначен для установки до того, как элементы прибудут ... не будьте слишком тяжелы на себе, естественно думать об переопределении init для выполнения работы. –

+1

Думаю, я нашел еще лучшее место для своей установки. У Apple есть привычка накапливать полезные категории (я предполагаю, что это то, что они есть) в разных труднодоступных документах для добавления UIKit. В одном из них я нашел awakeFromNib - готовит приемник для обслуживания после его загрузки из архива интерфейса Builder или файла nib. – Meltemi

1

UIViewControllers загрузить свои мнения при первом обращении к self.view собственности. Попытайтесь выяснить, вызван ли метод вашего viewDidLoad.

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

0

Я подозреваю, что вы назначили представление владельцу файла.

Открытый IB. В окне, которое есть. Владелец файла Первый ответ Вид

Щелкните правой кнопкой мыши по объекту «Вид». Если у него есть только один вариант «новая реферирующая розетка», то это означает, что вы не подключили внешний вид к владельцу файлов. Просто возьмите это немного около этого и перетащите его до владельца файла. После того, как владелец файлов появится новое меню, вы сможете выбрать «вид»

Сохраните его и посмотрите, работает ли он сейчас.

Наконец, убедитесь, что «владелец файла» установлен в ваш класс, вы можете просто выбрать владельца файла и проверить его. В одном из выпадающих вы сможете выбрать класс.

IB классный. Не сдавайтесь ... Сохраняет до 70% от вашего кода настройки (как указано в WWDC от Apple), поэтому придерживайтесь его.

John.

Смежные вопросы