在[self.navigationController popViewControllerAnimated:YES]之后调用什么方法;?

时间:2011-09-21 11:06:33

标签: iphone methods viewwillappear

我有这段代码:

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

    [self.navigationController popViewControllerAnimated:YES];
}

在我按下确定后,我在控制台中看到“BTN OK”消息,没有别的。在类RecherchePartenaireTableView中,我有方法viewWillAppear,viewDidload ...和每个方法的NSLog消息。在[self.navigationController popViewControllerAnimated:YES];之后调用什么方法?

3 个答案:

答案 0 :(得分:4)

如果您有控制器A并且您正在将控制器B推到A之上。 所以在控制器B中调用popViewControllerAnimated

viewWillAppear:控制器A的动画将被称为

在你的情况下,B是RecherchePartenaireTableView,因此在执行popViewController时无法调用B的viewWillAppear。

如果您想在RecherchePartenaireTableView消失时执行某些操作,请在RecherchePartenaireTableView的viewWillDisappear中执行此操作

答案 1 :(得分:4)

如果您尝试设置类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方法。

答案 2 :(得分:1)

- (void) viewWillAppear: (BOOL)animated method will be called first