将数据从一个视图控制器传递到下一个视图控制器,而无需在 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的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式将数据从表视图控制器传递到另一个控制器? [复制]