首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Xcode 10,Swift 4-如何在多个视图控制器之间传输数据?

Xcode 10,Swift 4-如何在多个视图控制器之间传输数据?
EN

Stack Overflow用户
提问于 2019-02-04 20:23:10
回答 2查看 2.3K关注 0票数 1

我目前正在开发一个应用程序,在发布事件时遇到了问题。

我在几个视图(7个屏幕)的序列中收集数据,并希望立即存储最终数据(或在最终视图中显示所有数据)。这些数据是,例如,位置信息,用户信息,事件图像,评论,事件类别,...如果我在一个或两个视图中收集数据,我知道如何将数据存储在数据库/存储(firebase)中。但在我的用例中,我有七个视图,我找不到任何优雅的方法。

使用Xcode10做这件事的最好方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2019-02-08 20:09:43

你可以像下面的代码一样使用。为这个结构中的所有屏幕设置所有必需的变量(如字符串、图像等)。你可以从任何ViewController访问它。

代码语言:javascript
运行
复制
struct InputDetails {
    static var details: InputDetails = InputDetails()

    var city: String = ""
    var lat: String = ""
    var long: String = ""
}

立即在此中增加价值

代码语言:javascript
运行
复制
InputDetails.details.city = textfiels.text

立即访问最后一个屏幕中的第一个屏幕值

代码语言:javascript
运行
复制
print(InputDetails.details.city)

,并且一旦您的API调用或以上的struct使用结束,请确保重置所有细节,如下所示。

代码语言:javascript
运行
复制
InputDetails.details = InputDetails()
票数 8
EN

Stack Overflow用户

发布于 2019-02-04 20:29:30

有几种方法可以在视图控制器之间传递数据。例如,您可以使用实例属性或段或委托方法。

我建议您学习这篇文章,它完整地描述了不同的方法以及如何应用它们:

How To: Pass Data Between View Controllers In Swift

编辑:

在检查了您问题中的图片后,我认为使用segue将是这里最合适的解决方案。从图片上看,您可以在一个View Controller中输入数据,然后将其传递到第二个View Controller中,最后将所有数据上传到Firebase。

我假设您使用故事板(如果没有,请参考上面的链接了解其他方法)。在下面的示例中,您将把一个字符串从一个VC传递到另一个VC。

步骤1:

在两个视图控制器之间添加分段。Storyboard ->按Ctrl键并单击VC one并拖动鼠标,您将看到一个蓝色箭头,将其拖动到VC two并松开,然后选择-> manual segue: show ->单击segue并为其指定标识符

第2步:

在VC 2中,创建一个字符串变量:

代码语言:javascript
运行
复制
class SecondViewController: UIViewController {
var stringToPass: String = ""

    override func viewDidLoad() {
    super.viewDidLoad()

    print(stringToPass)
}

第3步:在VC one中,输入以下内容:

代码语言:javascript
运行
复制
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let vc = segue.destination as? SecondViewController {
vc.stringToPass = "This is the string we pass between two VC"
     }
}

步骤4:然后,每当您想要转到SecondViewController时,就像这样执行段:

代码语言:javascript
运行
复制
performSegue(withIdentifier: "identifierYouEntered", sender: self)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54516032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档