ios开发中,当点击默认的back返回按钮时,只能一步一步的返回controller页面,如果像A->B->C->D->E...这么深的话,一步步返回的体验就会变得非常差,如何能一步搞定,请看下面的方法。
第一步:去github下载文件,https://github.com/FirstDKS521/PopAction,将下面的两个文件拖到目录下。
UIViewController+BackButtonHandler.h UIViewController+BackButtonHandler.m
第二步:在需要返回的controller页面#import引入UIViewController+BackButtonHandler.h文件。
第三步:实现BackButtonHandlerProtocol协议,如下。
#import "UIViewController+BackButtonHandler.h" @interface ChatViewController ()<BackButtonHandlerProtocol> @end
第四步:实现协议中的navigationShouldPopOnBackButton方法,点击返回按钮则会自动触发此方法,如下。
//返回到指定controller - (BOOL)navigationShouldPopOnBackButton{ //方式一 [self.navigationController popToRootViewControllerAnimated:YES]; //方式二 //直接跳转到指定controller(如联系人controller) // for (UIViewController *destVC in self.navigationController.viewControllers) { // if ([destVC isKindOfClass:[ContactsViewController class]]) { // [self.navigationController popToViewController:destVC animated:YES]; // } // } return YES; }
说明:方式一当用户点击back返回按钮时,它会自动返回到最开始的那个根controller,例如A->B->C->D->E,如果我最开始的是A页面一步步点击下来的,那么我在E页面点击back返回时,会直接返回到A页面。方式二则是可以直接指定返回到哪个controller页面,上面有介绍。