【问题标题】:Passing data to a specific ViewController将数据传递给特定的 ViewController
【发布时间】:2017-02-11 07:48:29
【问题描述】:

图片只是一个例子……

所以基本上我想将数据从 RED 传递到 BLUE 但我必须通过 GREEN.. 有没有办法将数据直接传递给 BLUE 而不必通过 GREEN

我现在正在做的是将数据传递给 GREEN 然后让 GREEN 读取数据并将其传递给的传统方法 蓝色

但是我的应用程序有很多 ViewControllers,我希望能够将它直接传递到最终页面(BLUE 页面)有没有办法?抱歉,我是 Swift 新手

【问题讨论】:

标签: ios swift uiviewcontroller segue


【解决方案1】:

如果您尝试将数据从 _Red 传递到 _Blue,而没有 _Green - 这与糟糕的架构有关,因为如果应用程序的逻辑发生了变化,并且您需要更改控制器的流程 - 您会感到非常头疼...

您可以将数据包装在对象中并通过,或者您可以通过DataController 来管理您的数据,而您的ViewController's 将通过Datacontroller 接口成为get\set

【讨论】:

    【解决方案2】:

    使用一个简单的 swift 类,例如 Sharedclass 来设置一个变量,然后从同一个 Sharedclass 中获取变量的值。示例如下

    import Foundation
    
    class SharedClass {
      static let sharedInstance = SharedClass()
      var phoneNumber = ""
    }
    

    设置变量

    SharedClass.sharedInstance.phoneNumber = "123456"
    

    获取变量

    BLUEViewController.phoneNumber = SharedClass.sharedInstance.phoneNumber
    

    【讨论】:

      【解决方案3】:

      您可以将您的导航控制器直接推送到您的视图控制器之一。试试这个;

      let storyboard = UIStoryboard(name: "Main", bundle: nil)
      if let blueController = storyboard.instantiateViewController(withIdentifier: "BlueViewController") as? BluewViewController {
              blueController.passedData = passedData
              navigationController?.pushViewController(blueController, animated: true)
          }
      

      或者你也可以展示它。而不是推入导航控制器。

      let storyboard = UIStoryboard(name: "Main", bundle: nil)
      if let blueController = storyboard.instantiateViewController(withIdentifier: "BlueViewController") as? BluewViewController {
              blueController.passedData = passedData
              present(blueController, animated: true, completion: nil)
          }
      

      【讨论】:

      • urmm 但应用程序流必须仍然是红绿蓝..我只想将某些数据从 RED 直接传递到 BLUE..
      • 好吧,我认为没有直接的方法可以做到这一点。因为必须加载视图来填充它们的属性。您可以将数据包装在一个对象中。但仍需要加载视图。
      猜你喜欢
      • 2018-03-21
      • 1970-01-01
      • 2012-11-01
      • 2019-01-13
      • 2013-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多