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
вызывается независимо от того, создается ли ваше представление с пером или нет.