如何返回Objective-C中的前一个视图?
我是iOS编程的初学者,我想实现回到主视图的function。
我使用这个代码:
-(IBAction)onclickhome:(id)sender { [self.navigationController popViewControllerAnimated:YES]; }
我已经使用导航控制器在主页button单击事件,但它不跳转到主屏幕。
你有什么build议和源代码适用于我的代码?
我不确定我是否理解你的问题。
你是什么意思
我已经使用导航控制器在主页button单击事件,但它不跳转到主屏幕
?
如果你想popup到根控制器,你可以使用popToRootViewControllerAnimated
。
[self.navigationController popToRootViewControllerAnimated:YES];
从UINavigationController
Apple文档
popToRootViewControllerAnimated: Pops all the view controllers on the stack except the root view controller and updates the display. - (NSArray *)popToRootViewControllerAnimated:(BOOL)animated
如果你已经build立了一个UINavigationController
并且它的根控制器被称为A,那么如果你从A到B然后从B到C导航,你有两种可能性来回到前一个控制器(你可以有其他控制器,但是我可以列出主那些):
- 使用
popViewControllerAnimated
从C导航回到popViewControllerAnimated
- 使用
popToRootViewControllerAnimated
从C导航回到popToRootViewControllerAnimated
导航来回视图的最好方法是通过推送和popup导航视图控制器堆栈中的视图。
回到一个视图,使用下面的代码。 这将确保视图之间的平滑过渡得到保留。
UINavigationController *navigationController = self.navigationController; [navigationController popViewControllerAnimated:YES];
要回两个视图,请按照以下步骤操作
UINavigationController *navigationController = self.navigationController; [navigationController popViewControllerAnimated:NO]; [navigationController popViewControllerAnimated:YES];
如果您不想回到您的预期视图,请在popup任何视图之前执行以下代码…
UINavigationController *navigationController = self.navigationController; NSLog(@"Views in hierarchy: %@", [navigationController viewControllers]);
你应该看到一个像下面这样的数组,这将帮助你validation堆栈是否按照预期进行了维护。
Views in hierarchy: ( "<Main_ViewController: 0x1769a3b0>", "<First_ViewController: 0x176a5610>", "<Second_ViewController: 0x176af180>"
我用
[self dismissViewControllerAnimated:YES completion:nil];
因为别人的答案没有在Xcode 8.0中工作