UIKit: вызывать awakeFromNib программно? - PullRequest
1 голос
/ 23 июня 2011

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

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 ]

5 голосов
/ 23 июня 2011

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

2 голосов
/ 23 июня 2011

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

...