У меня есть подкласс NSViewController, который загружает его представление из nib (с initWithNibName: bundle: и является владельцем файла этого nib).Лучший способ настроить NSViewController, инициализированный initWithNibName: bundle :?
мне нужно сделать некоторые инициализации после загрузки СИБ и я хочу, чтобы мой код, чтобы быть наиболее совместимым:
- в ИО: Существует метод viewDidLoad сделать что
- В OSX: В снежный барс, нет никакого способа, как viewDidLoad но awakeFromNib не вызывается на владельца файла СИБ слишком
Так что мои вопросы:
- Is awakeFromNib вызывается также у владельца файла в Lion?
- Если я использую awakeFromNib, мне нужно позвонить [super awakeFromNib]? (NSViewController реализует awakeFromNib?)
- Если ответ 1 есть ДА, это хорошее решение? :
- (void)initAfterNibLoaded { ... } - (void)viewDidLoad { // Code for ios [self initAfterNibLoaded]; } - (void)awakeFromNib { // Code for osx // Not sure if necessary [super awakeFromNib]; [self initAfterNibLoaded]; }
Если ответ 1 НЕТ, это хорошее решение? :
- (void)viewDidLoad {
// Initialize after nib loaded
}
#ifndef TARGET_OS_IPHONE
- (void)loadView {
// Call parent method
[super loadView];
// Simulate viewDidLoad method
[self viewDidLoad];
}
#endif
Спасибо
Поскольку NSViewController отсутствует в UIKit, я не уверен, почему вы обобщаете все платформы. –
Да, но я хочу сделать меньше модификаций в коде, если мне нужно поместить его в ios. Изменение родительского класса из NSViewController в UIViewController - это не большая проблема, но я предпочитаю избегать много ошибок, потому что некоторые методы вызывают в ios, а не в osx или наоборот. – Johnmph
Ответ, очевидно, jQuery. –