如何检测iOS中弹出了哪个子视图控制器?
我让视图控制器说A我要从A转到B。然后在B上按后退按钮,我来到A。现在我想知道我从哪个视图控制器回来。请告诉我怎么做。我知道我可以使用如何检测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
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;
}