如何检测iOS中弹出了哪个子视图控制器?

如何检测iOS中弹出了哪个子视图控制器?,ios,objective-c,iphone,ipad,uinavigationcontroller,Ios,Objective C,Iphone,Ipad,Uinavigationcontroller,我让视图控制器说A我要从A转到B。然后在B上按后退按钮,我来到A。现在我想知道我从哪个视图控制器回来。请告诉我怎么做。我知道我可以使用view WILLEANGE方法来做但我不想用这个 请告诉我哪种方法最好 -(void)viewWillAppear:(BOOL)animated { NSLog(@"view will appear called"); } 你已经被A-VC推到了B-VC右边。你可以通过弹出来返回 self.navigationController!。popViewCo

我让视图控制器说A我要从A转到B。然后在B上按后退按钮,我来到A。现在我想知道我从哪个视图控制器回来。请告诉我怎么做。我知道我可以使用
view WILLEANGE
方法来做但我不想用这个

请告诉我哪种方法最好

-(void)viewWillAppear:(BOOL)animated
{
    NSLog(@"view will appear called");
}

你已经被A-VC推到了B-VC右边。你可以通过弹出来返回

self.navigationController!。popViewControllerAnimated(true)——用B-VC编写此代码


VC视窗控制器

您可以在pop前传递控制器id
A.h
@property NSInteger childVC
上午

-(void)viewWillAppear:(BOOL)animated
{
    if (_childVC == 3){
        //todo
    }
}
B.m

-(void) viewWillDisappear:(BOOL)animated {
    A *parent = (A *)self.navigationController.viewControllers[self.navigationController.viewControllers.count - 2];
    parent.childVC = 3;
    [super viewWillDisappear:animated];
}

我看不到其他方法

您可以使用导航控制器委托并实现以下UINavigationControllerDelegate方法:


- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    UIViewController *fromViewController = [navigationController.transitionCoordinator viewControllerForKey:UITransitionContextFromViewControllerKey];
    NSLog(@"%@", fromViewController.title);
}
-(id)导航控制器:(UINavigationController*)导航控制器
AnimationControllerOperation:(UINavigationControllerOperation)操作
fromViewController:(UIViewController*)fromVC
toViewController:(UIViewController*)toVC
{
NSLog(@“来自VC类%@,[fromVC类]);
if([fromVC isKindOfClass:[ControlleryYouJustPopped class]]))
{
NSLog(@“从弹出的控制器返回”);
}
返回零;
}

这真的救了我。

我想知道它是B而不是C,那么我如何识别视图控制器try This->它返回当前视图控制器的名称。你说得对。我用一些额外的代码更新了我的答案。“fromViewController”可通过导航控制器传递协调器访问。是否为viewController分配了标题?是,仍然返回空值最佳答案!一个快速的例子会很好!
- (id <UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController
                                   animationControllerForOperation:(UINavigationControllerOperation)operation
                                                fromViewController:(UIViewController *)fromVC
                                                  toViewController:(UIViewController *)toVC
{
    NSLog(@"from VC class %@", [fromVC class]);
    if ([fromVC isKindOfClass:[ControllerYouJustPopped class]])
    {
        NSLog(@"Returning from popped controller");

    }

    return nil;
}