上个月进了新公司,读了新代码,愈来愈发现以前几年的iOS开发算是白学了。code
因为本人是C++转iOS开发,不少东西用C++的思惟、方法,甚至直接用C++来实现,写出了不少烂代码,致使维护困难,本来苹果提供的很好的方法都没有去研究,今天先将其中一个吧:UINavigationController的setViewControllers方法。开发
UINavigationController应该不少项目中都有用,push和pop是最经常使用的,但不能知足全部需求,若是要删除中间某个VC,或者重构UINavigationController维护的整个VCs的栈,setViewControllers就能够派上用场。rem
NSMutableArray * viewControllers = [self.navigationController.viewControllers mutableCopy]; for (UIViewController *viewController in [viewControllers reverseObjectEnumerator]) { NSString *tempName = NSStringFromClass([viewController class]); if ([tempName isEqualToString:viewControllerName]) { [viewControllers removeObject:viewController]; } [self.navigationController setViewControllers:viewControllers animated:YES];
能够任意增删改整个VCs栈的其中一个,知足咱们的跳转需求,UITabBarController也有一样的方法io
该方法支持iOS3.0+,放心使用。
table