gpt4 book ai didi

xcode - 如何避免模态 Storyboard无限循环

转载 作者:行者123 更新时间:2023-12-04 15:46:23 24 4
gpt4 key购买 nike

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

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

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

最佳答案

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

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

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

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

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

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

关于xcode - 如何避免模态 Storyboard无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13244961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com