2

我有这个代码:

-(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];

4

3 回答 3

4

如果您有一个控制器 A,并且您将控制器 B 推到 A 之上。那么在控制器 B 中调用 popViewControllerAnimated

viewWillAppear:animated 控制器 A 将被调用

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

如果你想在 RecherchePartenaireTableView 消失的时候做点什么,在 RecherchePartenaireTableView 的 viewWillDisappear 里面做

于 2011-09-21T11:30:47.920 回答
4

如果您尝试设置RecherchePartenaireTableView已经在导航堆栈上的 class 的属性,那么您通过创建它的新实例来做错了。

您应该从 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方法将在您从中推送视图的类上调用。

于 2011-09-21T11:49:44.323 回答
2
- (void) viewWillAppear: (BOOL)animated method will be called first
于 2011-09-21T11:12:59.440 回答