在 swift 中无需 segue 将数据从一个视图控制器传递到下一个视图控制器
Pass data from one view controller to the next WITHOUT a segue in swift
所以我有一个应用程序,您可以在第一个屏幕中选择一个按钮,它会根据您在第一个屏幕上选择的按钮将您带到另一个屏幕。因为我有这些可能的不同布局,所以我不能只使用从一个按钮到下一个视图控制器的 segue,因为涉及中间屏幕。所以它是这样的:
1 ---> 2 ---> 3a || 3b || 3c || 3d 等...
所以您在第一个屏幕上的选择决定了您的第三个屏幕的外观。
所以我想在第一个视图中为每个按钮关联一个值,通过 segue 将其发送到第二个视图,然后再次发送到第三个视图并告诉它使用正确的 segue基于与第一个视图关联的值到适当的第三个视图控制器。但我不能那样做,因为我不能将第二个屏幕设置为转至第三个屏幕的所有可能布局...至少我认为我不能。
底线问题:在没有 segue 的情况下单击按钮后,是否仍然可以转到另一个视图控制器,同时也将数据发送到下一个视图控制器,同样,没有 segue 来存储它?
请帮帮我
So instead I was thinking to have a value associated with each button
in the first view, have it sent to the second view via a segue, and
then sent again to the third view and tell it to use the proper segue
to the proper third view Controller based on the value associated with
the first view. But I can't do that because I can't set the second
screen to segue to all the possible layouts for the third screen...At
least i think I can't.
您可以使用 segues 做到这一点;您只需要正确连接它们即可。您可以通过 control-从顶部的 ViewController 图标拖动到下一个 ViewController.[=15 来创建它们,而不是将 segues 挂接到按钮上=]
创建这样的转场后,单击生成的转场箭头并在 Attributes Inspector 中为其指定一个标识符(类似 "segueToVC3a")。
因此,对于从 VC2 到 VC3a、VC2 到 VC3b 等的每个转场,您需要多次执行此操作
假设在你的第一个 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)
}
按照这些步骤...
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:你完成了!!
所以我有一个应用程序,您可以在第一个屏幕中选择一个按钮,它会根据您在第一个屏幕上选择的按钮将您带到另一个屏幕。因为我有这些可能的不同布局,所以我不能只使用从一个按钮到下一个视图控制器的 segue,因为涉及中间屏幕。所以它是这样的:
1 ---> 2 ---> 3a || 3b || 3c || 3d 等...
所以您在第一个屏幕上的选择决定了您的第三个屏幕的外观。
所以我想在第一个视图中为每个按钮关联一个值,通过 segue 将其发送到第二个视图,然后再次发送到第三个视图并告诉它使用正确的 segue基于与第一个视图关联的值到适当的第三个视图控制器。但我不能那样做,因为我不能将第二个屏幕设置为转至第三个屏幕的所有可能布局...至少我认为我不能。
底线问题:在没有 segue 的情况下单击按钮后,是否仍然可以转到另一个视图控制器,同时也将数据发送到下一个视图控制器,同样,没有 segue 来存储它?
请帮帮我
So instead I was thinking to have a value associated with each button in the first view, have it sent to the second view via a segue, and then sent again to the third view and tell it to use the proper segue to the proper third view Controller based on the value associated with the first view. But I can't do that because I can't set the second screen to segue to all the possible layouts for the third screen...At least i think I can't.
您可以使用 segues 做到这一点;您只需要正确连接它们即可。您可以通过 control-从顶部的 ViewController 图标拖动到下一个 ViewController.[=15 来创建它们,而不是将 segues 挂接到按钮上=]
创建这样的转场后,单击生成的转场箭头并在 Attributes Inspector 中为其指定一个标识符(类似 "segueToVC3a")。
因此,对于从 VC2 到 VC3a、VC2 到 VC3b 等的每个转场,您需要多次执行此操作
假设在你的第一个 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)
}
按照这些步骤...
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:你完成了!!