上個月進了新公司,讀了新代碼,愈來愈發現以前幾年的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