在一个视图控制器中,我有一个按钮,将呈现另一个视图控制器。从第二个视图控制器,我可以进入其他视图控制器,但不一定能回到带我来的那个视图控制器。如果是这种情况,如何删除原始的视图控制器?
您的描述在这里有些不清楚。这里可能有3种不同的情况:
在第一种情况下,您可以使用UINavigationController的方法:
- (UIViewController *)popViewControllerAnimated:(BOOL)animated
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated
使用viewControllers属性浏览整个堆栈。
第二种情况,如果您想将层次结构分解为另一个完全不同的视图控制器,则只需执行以下操作:
[[[UIApplication sharedApplication] keyWindow].rootViewController dismissViewControllerAnimated:YES completion:nil];
[[UIApplication sharedApplication] keyWindow].rootViewController = newController;
或者更好的方式是:在第一行的完成块中添加第二行。
或者在第三种情况下,如果您只想要一种例外情况,但仍然保留在导航控制器堆栈中,则使用以下方法:
- (void)addChildViewController:(UIViewController *)childController
- (void)removeFromParentViewController
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
如果它是使用导航控制器推送的:[self.navigationController popViewControllerAnimated:YES];