我有视图控制器说 A 我将从 A 转到 B 。然后按 B 按后退按钮我要来 A 。现在我想知道我将从哪个视图控制器回来。请告诉我我该怎么做。我知道我可以使用{{1}方法但不想使用它。
请告诉我哪种方法最好?
viewWillAppear
答案 0 :(得分:1)
你已经从A-VC向B-VC推进了。你可以通过弹出来回来。
self.navigationController!.popViewControllerAnimated(true) - 在B-VC中编写此代码
VC视图控制器。
答案 1 :(得分:1)
- (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;
}
这真的救了我。
答案 2 :(得分:0)
你可以在弹出之前传递控制器的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];
}
我没有看到其他方式
答案 3 :(得分:-1)
您可以使用导航控制器委托并实现以下UINavigationControllerDelegate方法:
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
UIViewController *fromViewController = [navigationController.transitionCoordinator viewControllerForKey:UITransitionContextFromViewControllerKey];
NSLog(@"%@", fromViewController.title);
}