问题描述
如果有一个rootViewController,它将显示全屏的UIScrollView。当我点击UIScrollview时,我想翻转屏幕并显示一个设置屏幕(该屏幕还有第二个屏幕,这是navigationController的原因)。
我可以在rootViewController中使用以下代码来显示设置屏幕:
self.navController = [[UINavigationController alloc]
initWithRootViewController:self.settingsViewController];
然后:
[self.navController pushViewController:self.settingsViewController animated:YES];
我的问题是:在设置视图中完成操作后,如何返回到rootViewController,所以我在其中创建导航Controller的控制器类因此不在堆栈中。
解决方法
我采用了Apple在节拍器示例中使用的解决方案。
我将settingsViewController设置为navigationController的rootViewController。比我使用以下命令显示navigationController:
[self presentModalViewController:navController animated:YES];
按照苹果的示例,我创建了settingsViewControllerDelegate接口,该接口被rootViewController采用。该接口并不复杂,只是需要由rootViewController实现的委托实例var和回调方法(settingsViewControllerDidFinish)。在该方法中,您调用:
[self dismissModalViewControllerAnimated:YES];
这样,我可以使用navigationController进行几个设置屏幕,并且可以从navigationController返回到rootViewController。