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

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

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

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

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

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

请帮帮忙哦

【问题讨论】:

    标签: iphone swift uiviewcontroller ios8 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!也请通过单击旁边的复选标记将其变为绿色来接受我的回答。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多