iphone dev: построитель интерфейса подкласса UIImageview - как вызвать собственный инициализатор - PullRequest
2 голосов
/ 09 марта 2010

Я возиться с разработкой iphone. У меня есть подкласс uiimageview, который я хочу использовать для обнаружения касаний. Я успешно добавил интерфейсостроитель, и я могу обнаружить прикосновение в моем подклассе UIImageview в моем приложении, так что в этом плане все хорошо. однако мой подкласс UIImageView имеет собственный инициализатор, который не вызывается при его создании в конструкторе интерфейса.

Если я вручную инициализирую UIImageview и добавляю его программно, я думаю, что он будет работать, но тогда я теряю способность «видеть» мое позиционирование в Интерфейсном конструкторе.

как я могу

1) «увидеть» uiimageview в конструкторе интерфейсов, который добавлен в код? (невозможно?) 2) вызвать мой пользовательский инициализатор, когда создается экземпляр подкласса в interfacebuilder.

спасибо


Привет, спасибо за предложения. Я думаю, что я все ближе к пониманию взаимосвязи между XIB и viewcontroller.

Теперь я успешно добавляю свой подкласс UIImageView программно и использую свой собственный инициализатор, который переопределяет InitWithFrame.

Я думаю, что прочитал, что xib вызывает 'awakeFromNib', поэтому я мог бы добавить туда свой код инициализации. Мне нравится идея добавить его программно, так как у меня больше контроля (хотя сложнее настроить свой IU)

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

Ответы [ 2 ]

4 голосов
/ 09 марта 2010

Возможно, вы указали неверный инициализатор.

Согласно документации объекты, неархивированные из NIB, инициализируются с initWithCode:, если они соответствуют протоколу NSCoding; объекты, которые не соответствуют NSCoding, инициализируются с init.

В этом конкретном случае UIImageView соответствует NSCoding. Скорее всего, вы хотели, чтобы initWithFrame: был вызван и поместили инструкции в этот метод.

0 голосов
/ 09 марта 2010

Разве вы не можете просто поместить свою логику инициализации в viewDidLoad? В частности,

-(void)viewDidLoad {
  [super viewDidLoad];
  // Put whatever was in your custom initialiser here.
}
...