6

一年前,我在旧版本的 Xcode 上编写了许多 iOS 应用程序。我刚刚开始了一个新项目,并在最新的 Xcode 中发现了故事板功能。事实证明,这非常适合我正在编写的应用程序,因为它由大约 30 个相互关联的屏幕组成。

我的问题是,我如何构建我的故事板和 segues 以允许我的应用程序遵循循环路径通过我的屏幕。我已经看到了许多示例,它们只是使用 modal 选项将屏幕 1 连接到屏幕 2,然后将屏幕 2 连接到屏幕 1。这显然有效,但是当我调试以这种方式构建的应用程序时,它会为每个执行的 segue 实例化每个屏幕(视图控制器)的新实例。在下图中(抱歉,我画了一张漂亮的图片,但由于我的新手状态,无法发布),我如何从屏幕 1 转到屏幕 2 再到屏幕 3 并返回原始屏幕 1 而无需创建新的实例?

// Screen 1 --> Screen 2 --> Screen3 
//     ^                         | 
//     |                         | 
//     +-------------------------+ 
4

2 回答 2

3

好的,自从提出这个问题以来,我已经做了一些研究,我相信我可以为这个问题提供一个合理的答案。简而言之,我在问题中提出的方法与故事板和转场的实际工作方式不兼容。Segue总是实例化它所针对的视图控制器/视图的新实例。这意味着当我们从屏幕 3 回到屏幕 1 时,我们将转到屏幕 1 的新实例,而不是原来的实例。为了解决这个问题,我将稍微不同地实现情节提要。

// Screen 1 --> Screen 2
//     |
//     +------> Screen 3

然后我将配置屏幕 1 以监听来自屏幕 2 和 3 的“下一个屏幕”消息(通过委托/协议)。

当屏幕 1 上的用户选择屏幕 2 的按钮时,情节提要和 segue 将处理屏幕 2 的模态实例化。当屏幕 2 上的用户选择“下一个屏幕”按钮,而不是继续到屏幕 3 时,我将关闭screen 2 并让 screen 1 通过新的 Screen 1 -> Screen 3 segue 启动 Screen 3。

这种方法的优点是允许屏幕 1 成为循环中所有后续屏幕的主控制器(在我的例子中,我在循环中有 10 个屏幕/练习)。唯一的缺点是故事板不能很好地反映屏幕的流程。

我希望这可以帮助其他尝试在他们的 iOS 项目中实现相同目标的人。

于 2012-11-10T03:04:14.000 回答
-1

我找到了很好的解决方案——为关闭源视图控制器创建新的自定义 segue。怎么做?为了创建这个你可以看到链接http://jeffreysambells.com/2014/02/19/dismissing-a-modal-view-using-a-storyboard-segue 我希望能帮助别人=)

于 2014-11-14T17:58:37.617 回答