mis*_*lls 6 xcode modal-dialog storyboard ios5 segue
一年前我在旧版Xcode上编写了许多iOS应用程序.我刚刚开始一个新项目并在最新的Xcode中发现了故事板功能.事实证明,这对于我正在编写的应用程序来说是完美的,因为它包含~30个相互关联的屏幕.
我的问题是,我如何构建我的故事板和segues以允许我的应用程序在我的屏幕上遵循循环路径.我已经看到了一些例子,它们只是将屏幕1转换为屏幕2,然后使用模态选项将屏幕2转换为屏幕1.这显然有效,但是当我调试以这种方式构建的应用程序时,它会为每个执行的segue实例化每个屏幕的新实例(视图控制器).在下面的图表中(道歉,我画了一张漂亮的图片,但由于我的新手状态,无法发布),如何从屏幕1转到屏幕2到屏幕3并返回到原始屏幕1而不创建新的实例?
// Screen 1 --> Screen 2 --> Screen3
// ^ |
// | |
// +-------------------------+
Run Code Online (Sandbox Code Playgroud)
好吧,自从提出这个问题以来,我已经做了相当多的研究,我相信我可以为这个问题提供合理的答案。简而言之,我在问题中提出的方法与故事板和转场的实际工作方式不兼容。Segues总是实例化它所针对的视图控制器/视图的新实例。这意味着当我们从屏幕 3 返回屏幕 1 时,我们将进入屏幕 1 的新实例,而不是原始屏幕。为了解决这个问题,我将以稍微不同的方式实现故事板。
// Screen 1 --> Screen 2
// |
// +------> Screen 3
Run Code Online (Sandbox Code Playgroud)
然后,我将配置屏幕 1 以侦听来自屏幕 2 和 3 的“下一个屏幕”消息(通过委托/协议)。
当屏幕 1 上的用户选择屏幕 2 的按钮时,故事板和 segue 将处理屏幕 2 的模式实例化。当屏幕 2 上的用户选择“下一个屏幕”按钮时,我将忽略,而不是继续到屏幕 3 screen 2 并让 screen 1 通过新的 Screen 1 -> Screen 3 segue 启动 Screen 3。
这种方法的优点是允许屏幕 1 成为循环中所有后续屏幕的主控制器(在我的实例中,循环中有 10 个屏幕/练习)。唯一的缺点是故事板不能很好地反映屏幕的流程。
我希望这可以帮助其他尝试在 iOS 项目中实现同样目标的人。
| 归档时间: |
|
| 查看次数: |
798 次 |
| 最近记录: |