将数据从一个视图控制器传递到下一个视图控制器,而无需在 swift 中进行 segue

Posted

技术标签:

【中文标题】将数据从一个视图控制器传递到下一个视图控制器,而无需在 swift 中进行 segue【英文标题】:Pass data from one view controller to the next WITHOUT a segue in swift 【发布时间】:2015-06-21 21:44:07 【问题描述】:

所以我有一个应用程序,您可以在第一个屏幕中选择一个按钮,它会根据您在第一个屏幕上选择的按钮将您带到另一个屏幕。因为我有这些可能的不同布局,所以我不能只使用从一个按钮到下一个视图控制器的 segue,因为涉及到中间屏幕。所以它是这样的:

1 ---> 2 ---> 3a || 3b || 3c || 3d等...

因此,您在第一个屏幕上的选择决定了您在第三个屏幕上的外观。

因此,我想在第一个视图中为每个按钮关联一个值,通过 segue 将其发送到第二个视图,然后再次发送到第三个视图并告诉它使用正确的 segue 到基于与第一个视图关联的值的适当的第三个视图控制器。但是我不能这样做,因为我不能将第二个屏幕设置为第三个屏幕的所有可能布局......至少我认为我不能。

底线问题:在没有转场的情况下单击按钮后是否仍要转到另一个视图控制器,同时又将数据发送到下一个视图控制器,而无需转场将其存储在其中?

请帮帮忙哦

【问题讨论】:

【参考方案1】:

按照这些步骤...

1:创建一个名为 Manager.swift 的单独文件并将此代码放入其中...

//manager.swift

    import Foundation

    struct Manager 

    static var messageText = String()


    

2:按 Shift+Command+K 清理您的项目。

3:在第一个视图控制器中,将 messageText 设置为您要传递的数据...

Manager.messageText = self.dataToPass

4:在第二个视图控制器中检索数据并将内容设置为消息文本...

self.dataToReceive = Manager.messageText

5:你完成了!!

【讨论】:

【参考方案2】:

所以相反,我想为每个按钮关联一个值 在第一个视图中,通过 segue 将其发送到第二个视图,并且 然后再次发送到第三个视图并告诉它使用正确的 segue 根据与关联的值到正确的第三个视图控制器 第一个视图。但我不能这样做,因为我不能设置第二个 屏幕继续第三个屏幕的所有可能布局...在 至少我认为我做不到。

可以用segues做到这一点;您只需要正确连接它们即可。您可以通过 control 从顶部的 ViewController 图标拖动到下一个 ViewController 来创建它们,而不是将 segues 连接到按钮。

创建这样的转场后,单击生成的转场箭头并在 Attributes Inspector 中为其指定一个标识符(类似于“segueToVC3a”)。

因此,对于从 VC2 到 VC3a、VC2 到 VC3b 等的每个 segue,您需要多次执行此操作。

假设在您的第一个 viewController 中您决定了 whereToGo 的值,然后您将其传递给您的第二个 viewController 并使用 segue。然后在您的第二个 viewController 中,您可以执行以下操作:

var identifier: String = ""
switch whereToGo 
    case "VC3a": identifier = "segueToVC3a"
    case "VC3b": identifier = "segueToVC3b"
    default: break


if identifier != "" 
    performSegueWithIdentifer(identifier, sender: self)

【讨论】:

我没有投票给@vacawama!我正在投票,这超级简单,我知道该怎么做!非常感谢!! 感谢@KellysOnTop23!也请通过单击旁边的复选标记将其变为绿色来接受我的回答。

以上是关于将数据从一个视图控制器传递到下一个视图控制器,而无需在 swift 中进行 segue的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式将数据从表视图控制器传递到另一个控制器? [复制]

如果条件有效,则转到下一个 ViewController 并传递数据

试图在两个视图控制器之间传递数据

如何将从列表中选择的多个项目传递到下一个视图?

将数据从视图控制器传递到另一个视图控制器

将数据从一个视图控制器传递到同一视图上的另一个视图控制器