加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xcode – 如何避免Modal Storyboard无限循环

发布时间:2020-12-14 19:40:07 所属栏目:百科 来源:网络整理
导读:一年前我在旧版 Xcode上编写了许多iOS应用程序.我刚刚开始一个新项目并在最新的Xcode中发现了故事板功能.事实证明,这对于我正在编写的应用程序来说是完美的,因为它包含~30个相互关联的屏幕. 我的问题是,我如何构建我的故事板和segues以允许我的应用程序在我
一年前我在旧版 Xcode上编写了许多iOS应用程序.我刚刚开始一个新项目并在最新的Xcode中发现了故事板功能.事实证明,这对于我正在编写的应用程序来说是完美的,因为它包含~30个相互关联的屏幕.

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

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

解决方法

好吧,自从提出这个问题以来,我做了一些研究,我相信我可以为这个问题提供一个合理的答案.简而言之,我在问题中提出的方法与故事板和segue实际工作的方式不兼容. Segues始终实例化其所针对的视图控制器/视图的新实例.这意味着当我们从屏幕3返回到屏幕1时,我们将进入屏幕1的新实例,而不是原始实例.要解决这个问题,我将略微区别地实现故事板.

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

然后,我将确认屏幕1以从屏幕2和3收听“下一屏幕”消息(通过委托/协议).

当屏幕1上的用户选择屏幕2的按钮时,故事板和segue将处理屏幕2的模态实例化.当屏幕2上的用户选择“下一屏幕”按钮,而不是切换到屏幕3时,我将解雇屏幕2并且屏幕1通过新屏幕1启动屏幕3 – >屏幕3 segue.

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

我希望能帮助其他人尝试在他们的iOS项目中实现同样的目标.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读