viewDidLoad в NSViewController?
в iPhone я делаю UIViewController viewDidLoad и пишу код установки для настройки представления.
Но как я могу это сделать в NSViewController?
Я пробовал с loadView, но он не работает … Может быть, я что-то не так, я не знаю …
PS: Я только что начал с программирования OSX / iOS, так что извините, если я спрошу что-то глупое 🙁
- Как установить жирный шрифт и курсив на UILabel iPhone / iPad?
- Как проспать от сна программно, если крышка закрыта?
- iOS HTTP-запрос в фоновом режиме
- Воспроизведение звука на iPhone даже в бесшумном режиме
- фильтрация NSArray в новый NSArray в объективе-c
- Звук не работает в iPhone Simulator?
- Как распределить приложение ios без проводов без управления UDID и перекомпиляции
- Как запустить UITableView на последней ячейке?
- Программный пример UIPickerView?
- Как настроить размер содержимого UIScrollView динамически
- Как resize UIModalPresentationFormSheet?
- Получение времени, прошедшего в Objective-C
- Чтение аудио сэмплов через AVAssetReader
Начиная с OS X 10.10, viewDidLoad
доступен и поддерживается в NSViewController
.
До этого вы должны были пройти этот самородок в примечаниях к выпуску Snow Leopards:
Советы для людей, которые ищут методы -viewWillLoad и -viewDidLoad в NSViewController
Хотя NSWindowController имеет методы -windowWillLoad и -windowDidLoad для переопределения classа NSViewController, представленного в Mac OS 10.5, не имеет соответствующих методов -viewWillLoad и -viewDidLoad. Вы можете переопределить [NSViewController loadView], чтобы настроить то, что происходит непосредственно перед или сразу после загрузки nib, выполняемой controllerом представления.
Я понял это в течение нескольких минут после публикации моего комментария. Добавление моего вывода в качестве ответа, потому что это пример, отсутствующий в документах. Приведенный ниже код предоставит вам метод viewDidLoad. Это так просто, что я удивляюсь, почему Apple еще не реализовала его в OS X.
- (void)viewWillLoad { if([NSViewController instancesRespondToSelector:@selector(viewWillLoad)]) { [super viewWillLoad]; } ... } - (void)viewDidLoad { if([NSViewController instancesRespondToSelector:@selector(viewWillLoad)]) { [super viewDidLoad]; } } - (void)loadView { BOOL ownImp = ![NSViewController instancesRespondToSelector:@selector(viewWillLoad)]; if(ownImp) { [self viewWillLoad]; } [super loadView]; if(ownImp) { [self viewDidLoad]; } }
Исходный источник: http://www.cocoabuilder.com/archive/cocoa/195802-garbage-collection-leaks-and-drains.html
Начиная с OSX 10.10 (Yosemite) в -viewDidLoad
теперь есть -viewDidLoad
, -viewWillAppear
, -viewDidAppear
, NSViewController
. См. WWDC 2014 – Раскадровки и controllerы в сеансе OS X для получения дополнительной информации, чтобы узнать, когда вызывается каждый из них и т. Д.
Вот соответствующий бит из 10.10 заголовочных документов о -viewDidLoad:
Вызывается после загрузки представления. Для controllerов представлений, созданных в коде, это после -loadView. Для controllerов представлений, исключенных из наконечника, это происходит после того, как будет установлено представление. По умолчанию ничего не делает.
- (void)viewDidLoad NS_AVAILABLE_MAC(10_10);
почему бы вам не попробовать:
- (void) awakeFromNib{ //setup code NSLog(@"hello there"); }
Похоже, что в 10.10 viewDidLoad теперь находится в NSViewController.
хм, на самом деле я бы тоже сделал это …
- (void)viewWillLoad { if (! bool_viewwillload) { // execute the code bool_viewwillload = true; } } - (void)viewDidLoad { if (! bool_viewdidload) { // execute the code bool_viewdidload = true; } }
а затем просто сделайте вид загрузки таким образом
- (void)loadView { [self viewWillLoad]; [super loadView]; [self viewDidLoad]; }