我是iOS编程的初学者,我想实现回到家庭视图的功能。
我使用了这段代码:
-(IBAction)onclickhome:(id)sender
{
[self.navigationController popViewControllerAnimated:YES];
}
我在主页按钮点击事件中使用了navigationController,但它没有跳转到主屏幕。
您有任何适用于我的代码的建议和源代码吗?
答案 0 :(得分:10)
我不确定我理解你的问题。
你的意思是什么
我在主页按钮点击事件中使用了navigationController,但确实如此 不要跳到主屏幕
如果要弹出到根控制器,可以使用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
如果您设置了UINavigationController
并且其根控制器名为A,那么如果您从A导航到B然后从B导航到C,则有两种可能性可以返回到之前的控制器(您可以有其他人,但我列出了主要的):
popViewControllerAnimated
popToRootViewControllerAnimated
答案 1 :(得分:6)
导航视图的最佳方法是从导航视图控制器堆栈中推送和弹出视图。
要返回一个视图,请使用下面的代码。这将确保保留视图之间的平滑过渡。
UINavigationController *navigationController = self.navigationController;
[navigationController popViewControllerAnimated:YES];
要返回两个视图,请执行以下操作
UINavigationController *navigationController = self.navigationController;
[navigationController popViewControllerAnimated:NO];
[navigationController popViewControllerAnimated:YES];
如果您没有回到预期视图,请在弹出任何视图之前执行以下代码...
UINavigationController *navigationController = self.navigationController;
NSLog(@"Views in hierarchy: %@", [navigationController viewControllers]);
你应该看到一个类似下面的数组,它将帮助你验证堆栈是否按预期维护。
Views in hierarchy: (
"<Main_ViewController: 0x1769a3b0>",
"<First_ViewController: 0x176a5610>",
"<Second_ViewController: 0x176af180>"
答案 2 :(得分:3)
我用
[self dismissViewControllerAnimated:YES completion:nil];
因为其他答案在Xcode 8.0中没有起作用