ios - 发布内容后的最佳转场
问题描述
我是 swift 新手,我很好奇从一种观点转移到另一种观点的最佳方式。我有一个主视图,它是选项卡栏上的选项卡并嵌入导航控制器中。从这个主视图中,我获取用户内容,然后在主视图上显示该内容。目前,我正在从主视图切换到收集内容的视图,然后再切换回主视图。唯一的问题是,当我这样做时,我得到了一个后退按钮,即使我隐藏了后退按钮,我只是继续将屏幕放在选项卡的顶部。从收集内容的视图转换回主视图的最佳方式是什么?
解决方案
基本上有两种显示和隐藏视图控制器的一般方式:
- 推入导航控制器(使用“显示”segue 或代码
self.navigationController?.pushViewController(viewController, animated: true)
。在这种情况下,返回上一个屏幕的正常方法是使用“返回”导航按钮。如果您需要手动操作,您可以self.navigationController?.popViewController(animated: true)
在视图中使用控制器或使用 unwind segue(虽然我很少看到它使用)。如果您需要返回导航堆栈中的第一个屏幕,您可以使用self.navigationController?.popToRootViewController(animated: false)
. - 模态演示(使用 'Present Modally' segue 或
self.present(viewController, animated: false)
。在这种情况下,为了返回上一个视图,您必须在屏幕上添加一些关闭/取消按钮并将其与调用self.dismiss(animated: true, completion: nil)
.
无论如何,我建议您熟悉有关此主题的Apple 指南。
如果你需要在你的控制器之间传递一些数据,有多种方法可以做到这一点,比如直接将它分配给 in 中的属性prepare(for segue: UIStoryboardSegue, sender: Any?)
,实现委托/回调交互,实现观察者,共享回存储等。
推荐阅读
- php - 验证者,怎么了?
- data-visualization - PowerBi中的多轴重叠条形图
- c# - C# 直接从流中打开和编辑 .xls 文件
- ios - Swift 协议和扩展,我需要根据需要调用覆盖方法或默认扩展方法
- php - 如何从 URL 中删除查询字符串?
- javascript - PhantomJS 不工作
- javascript - 在 cypress 中切换到 iFrame 相当于 Protractor
- google-sheets - 谷歌表格总和(如果在特定周内)
- php - 如何使用 LIKE 编写查询以接受特殊字符?
- javascript - 只有在持续时间超过几秒钟时才触发 mouseleave 事件 - jQuery