UIKit: вызывать awakeFromNib программно?

Я видел этот код:

CoolButton *coolButton = [[CoolButton alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 60.0f, 25.0f)];
[coolButton awakeFromNib];
// ...
[coolButton release];

CoolButton подклассы UIButton, Это нормально звонить awakeFromNib программно?

Каков наилучший способ сделать это, если я хочу сделать то же самое, что и в -[CoolButton awakeFromNib] временами, когда я хочу создать объект программно, а не из файла пера?

Должен ли я просто определить метод и вызвать его в -[CoolButton awakeFromNib] а также -[CoolButton initWithFrame]? Или есть другой метод инициализации, который я должен определить, который вызывается в обоих случаях: создаю ли я CoolButton программно или из файла пера?

2 ответа

Решение

Нет, не существует метода, который вызывается как для объектов, созданных в коде, так и для объектов, созданных из NIB. Вы должны написать отдельный метод, который содержит общую логику инициализации, и вызывать его из обоих awakeFromNib а также initWithFrame:,

Что ж awakeFromNib вызывается всякий раз, когда установлены все соединения между XIB и NIB. я верю awakeFromNib вызывается для объекта, когда он инициализируется из файла пера. Так что, если вы создаете это программно, а не с помощью файла NIB, тогда нет необходимости вызывать awakeFromNib, призвание initWithFrameс другой стороны, звучит как путь. В этой функции вы можете программно создавать свое представление, не нуждаясь в файле пера. Я могу ошибаться, но я думаю initWithFrame вызывается независимо от того, создается ли ваше представление с пером или нет.

Другие вопросы по тегам