iPhone, addSubView не вызывает willViewAppear? - PullRequest
2 голосов
/ 17 октября 2010

Я добавляю вид с -addSubView.Я также использую вид в другом месте и presentModalViewController.

-viewWillAppear вызывается с presentModalViewController, но не с addSubView.

Без сомнения, это что-то очевидное?

Ответы [ 2 ]

5 голосов
/ 17 октября 2010

viewWillAppear: вызывается родительским контроллером представления, когда он представляет другой контроллер представления (например, pushViewController:animated: или presentModalViewController:animated:).Он никогда не вызывается, когда вы вручную звоните addSubview:.

1 голос
/ 05 марта 2013

Приведенный выше ответ не выглядит правильным, в любом случае в iOS 6.1. Когда я создаю вид с контроллером, как это:

    self.welcomeController = [[DPLWelcomeViewController alloc] initWithNibName:@"DPLWelcomeViewController" bundle:nil];
    self.welcomeController.view.frame = self.window.screen.applicationFrame;
    self.welcomeController.delegate = self;
    [self.window.rootViewController.view addSubview:self.welcomeController.view];

-viewWillAppear вызывается (если свойство self.welcomeController является сильным).

С другой стороны, когда я сделал это так:

    DPLWelcomeViewController *welcomeController = [[DPLWelcomeViewController alloc] initWithNibName:@"DPLWelcomeViewController" bundle:nil];
    welcomeController.view.frame = self.window.screen.applicationFrame;
    welcomeController.delegate = self;
    [self.window.rootViewController.view addSubview:welcomeController.view];

ARC очистил его после выхода из этого метода, и, насколько я могу судить, -viewWillAppear отправлено на ноль. (Несмотря на то, что я мог видеть представление Welcome на моем экране - я полагаю, что rootViewController.views сохранил view , но ничего не сохранило viewController .)

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