如何检测 iOS 中弹出了哪个子视图控制器?
How to detect which child view controller was popped up in iOS?
我让视图控制器说 A 我要从 A 到 B。然后在 B 上,按后退按钮我将进入 A。现在我想知道我从哪个视图控制器进入 back.Please 告诉我该怎么做 this.I 知道我可以使用 viewWillAppear
方法做到这一点,但不想使用它。
请告诉我哪种方法最好?
-(void)viewWillAppear:(BOOL)animated
{
NSLog(@"view will appear called");
}
你已经被push到B-VC从A-VC right.You可以pop回来
self.navigationController!.popViewControllerAnimated(true)--把这段代码写在B-VC
VC-ViewController。
你可以在pop之前传递controller的id
A.h
@property NSInteger childVC;
A.m
-(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 <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;
}
这真的救了我。
我让视图控制器说 A 我要从 A 到 B。然后在 B 上,按后退按钮我将进入 A。现在我想知道我从哪个视图控制器进入 back.Please 告诉我该怎么做 this.I 知道我可以使用 viewWillAppear
方法做到这一点,但不想使用它。
请告诉我哪种方法最好?
-(void)viewWillAppear:(BOOL)animated
{
NSLog(@"view will appear called");
}
你已经被push到B-VC从A-VC right.You可以pop回来
self.navigationController!.popViewControllerAnimated(true)--把这段代码写在B-VC
VC-ViewController。
你可以在pop之前传递controller的id
A.h
@property NSInteger childVC;
A.m
-(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 <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;
}
这真的救了我。