почему viewDidAppear не запускается? - PullRequest
3 голосов
/ 12 ноября 2009

У меня есть контроллер корневого представления, который вставляет подпредставление с индексом 0 в его методе viewDidLoad.

Я пытаюсь заставить подпредставление стать firstResponder, но могу сделать это - насколько я понимаю - в методе viewDidAppear подпредставления.

вот строка кода, которую я добавил в метод viewDidLoad контроллера корневого представления:

        [self.view insertSubview: subViewController.view atIndex: 0];

у subviewcontroller есть xib, subViewController.xib, который корректно отображается во время выполнения. тем не менее viewDidAppear для subViewController не запускается.

есть идеи, почему это происходит? Любая идея, как это исправить - кроме вызова viewDidAppear вручную (это приводит к невозможности стать firstResponder)?

спасибо,

mbotta

Ответы [ 2 ]

15 голосов
/ 12 ноября 2009

Вы должны поместить представление controller в стек навигации, чтобы вызывать его методы делегата. Добавление представления вашего контроллера представления в массив subview не вызовет их. Первое, что вы должны сделать, это прочитать Руководство по программированию View Control от Apple , так как это избавит вас от некоторых головных болей, которые вы создаете, делая это нестандартным способом.

Вместо добавления представления в подпредставления контроллера корневого представления, сделайте следующее:

SubviewController *controller = [[SubviewController alloc] init];
[[self navigationController] pushViewController:controller animated:YES];
[controller release], controller = nil;

Теперь будут вызваны ваши методы делегата. Если у вас нет контроллера навигации в качестве корневого контроллера, это не сработает.

10 голосов
/ 12 ноября 2009

Если я правильно помню (извините, не могу найти место в документации сейчас) -viewDidAppear не вызывается для подпредставлений. Вы должны вызвать его вручную в методе -viewDidAppear родительского контроллера представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...