将数据从一个视图控制器传递到下一个视图控制器没有快速的segue

时间:2015-06-21 21:44:07

标签: iphone swift uiviewcontroller ios8 segue

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

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

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

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

底线问题:无论如何在点击没有segue的按钮后转到另一个视图控制器,同时还将数据发送到下一个视图控制器,再次没有segue存储它?

请帮助mehhh

2 个答案:

答案 0 :(得分:3)

请按照以下步骤操作......

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:你的成品!!

答案 1 :(得分:2)

  

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

可以使用segues执行此操作;你只需要正确地连接它们。您可以通过 control - 从顶部的ViewController图标拖动到下一个ViewController来创建它们,而不是将segue挂钩到按钮。

segue from view controller icon

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

Putting in segue identifier

因此,对于从VC2到VC3a,VC2到VC3b等的每个segue,你会多次这样做。

假设在你的第一个viewController中你决定whereToGo的值,然后用segue将它传递给你的第二个viewController。然后在你的第二个viewController中,你可以做这样的事情:

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

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