Какой метод вызывается после [self.navigationController popViewControllerAnimated: YES] ;? - PullRequest
1 голос
/ 21 сентября 2011

У меня есть этот код:

-(IBAction)OkButtonPressed:(id)sender{
    NSLog(@"BTN OK");
    RecherchePartenaireTableView *recherchePartenaireTableView=[[RecherchePartenaireTableView alloc]init];
    recherchePartenaireTableView.mytext=textFieldCode.text;

    [self.navigationController popViewControllerAnimated:YES];
}

и после того, как я нажму ok, я вижу в консоли сообщение "BTN OK" и больше ничего.В классе RecherchePartenaireTableView у меня есть методы viewWillAppear, viewDidload ... и сообщение NSLog для каждого метода.Какой метод вызывается после [self.navigationController popViewControllerAnimated:YES];?

Ответы [ 3 ]

4 голосов
/ 21 сентября 2011

Если у вас есть контроллер A и вы помещаете контроллер B поверх A. Итак, вызов popViewControllerAnimated в контроллере B

viewWillAppear: анимированный для контроллера A будет называться

в вашемслучай B - это RecherchePartenaireTableView, поэтому при выполнении popViewController не будет вызываться viewWillAppear для B.

Если вы хотите сделать что-то, когда RecherchePartenaireTableView исчезнет, ​​сделайте это в представлении RecherchePartenaireTableView viewWillDisappear

4 голосов
/ 21 сентября 2011

Если вы пытаетесь установить свойство класса RecherchePartenaireTableView, которое уже находится в стеке навигации, то вы делаете это неправильно, создавая его новый экземпляр.

Вы должны получить обратноэкземпляр из стека navigationController.

Изменить

RecherchePartenaireTableView *recherchePartenaireTableView=[[RecherchePartenaireTableView alloc]init];
recherchePartenaireTableView.mytext=textFieldCode.text;

на

NSArray *viewControllers = [self.navigationController viewControllers];
RecherchePartenaireTableView *recherchePartenaireTableViewVC = (RecherchePartenaireTableView *)[viewControllers objectAtIndex:viewControllers.count - 2];
recherchePartenaireTableViewVC.mytext=textFieldCode.text;

viewDidAppear метод будет вызван в классе, из которого вы выдвинули представление.

1 голос
/ 21 сентября 2011
- (void) viewWillAppear: (BOOL)animated method will be called first
...