我对 iOS 开发完全陌生,但仍然不知道如何完成如此简单的任务。
我有一个原始的 xCode 4.4.1“单一视图应用程序”项目。
例如,我想要四个屏幕,每个屏幕都有用于切换到其他视图的按钮。
屏幕不是按层次设置的:例如,我希望能够从屏幕 1 切换到屏幕 2 或屏幕 3,从屏幕 2 切换到屏幕 4,等等。在应用程序运行时——显示第一个屏幕,但它的状态不是“root”或“main”——它只是一个常见的屏幕。
我的条件是:
- 我只有默认的主故事板文件(xib 解决方案不好)。
- 我不想依赖使用导航控制器或类似的预结构化的东西。
在我看来,我需要以某种方式设置带有子控制器的容器控制器,如 WWDC 2011 的 Session 102 中所述,但我不明白如何正确编写代码,因此它不会与主 Storyboard 冲突(我有两次尝试使用来自其他类似主题的基于 xib 的解决方案,但都失败了)。
我非常感谢一个完整的工作示例,因为我的经验还不允许我依赖部分提示,尽管它们也可以。
首选以编程方式执行此操作的解决方案(不使用拖动等 xCode UI 功能)。
谢谢!
更新:切换时,我不想每次都实例化新屏幕,而是重新使用现有的屏幕,如果它们已经存在的话。
更新 2:我的用例,针对这个问题进行了简化:
我有一个注册屏幕,带有相应的模式屏幕来处理所有常见的登录/注销/等情况。我有我的应用程序的主屏幕,在登录/注册程序完成后成为“主”应用程序屏幕。我不想让注册屏幕/控制器成为主屏幕的模式,因为主屏幕很大程度上取决于用户特定的信息,所以我希望这些屏幕不以任何方式按层次结构组织。对于这种简化的情况,我考虑采用以下流程:
1) 用户尚未登录 - 显示注册屏幕。后来,在注册之后。程序完成 -切换到“主”屏幕(这是我不知道的关键点,这就是为什么这个问题)。
2) 用户已登录并被应用程序识别 - 出现“主”屏幕。
像我描述的那样具有注册和“主”屏幕排除(或什么?)在“选项卡式应用程序”模板中具有“选项卡控制器”功能的情况,因为在我的情况下,我希望完全禁用选项卡栏 - 我需要什么不是导航。和导航栏功能,但只是在 reg 之间执行转换的方式。和“主”屏幕-这就是我在问题中“用手”的意思。
最后更新:
在试验了标签栏控制器之后,对于这个用例,我最终使用了禁用导航栏的导航控制器(我在标签栏控制器中没有找到类似的控制器)并通过performSegueWithIdentifier方法管理屏幕切换以及切换他们通过“手动”操作viewControllers导航堆栈。
谢谢大家的回答!