ios我怎么知道控制器返回"推"或"弹出"

zt9*_*788 1 viewdidappear popviewcontroller pushviewcontroller ios

我有三个控制器,我想知道控制器是推或弹

控制器:

{
    if(!b)
     b = [B alloc] init];
    [self.navigationController pushViewController:b animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

B控制器:

- (void) viewDidAppear:(BOOL)animated 
{
     [super viewDidAppear:animated];
     //I want here to judge, from the "A" push over, or to return from the "C" "pop"

     //if it is push from A 
     //dosomething.....


     //if it is pop from C
     //dosomething
}
-(void)testAction:(id)sender
{
    C *c = [[C alloc] init];
    [self.navigationController pushViewController:b animated:YES];
    [c release];
}
Run Code Online (Sandbox Code Playgroud)

C控制器:

{
    [self.navigationController popViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

rde*_*mar 7

看看UIViewController方法,isMovingToParentViewController.如果正在显示视图控制器,则会返回YES,因为它被按下,但是如果显示它则返回NO,因为另一个视图控制器从堆栈中弹出.

-(void)viewDidAppear:(BOOL)animated { //Code in view controller B
    [super viewDidAppear:animated];
    NSLog(@"isMovingToParentViewController: %d",self.isMovingToParentViewController);
    // this will log 1 if pushing from A but 0 if C is popped
}
Run Code Online (Sandbox Code Playgroud)