【问题标题】:How can I send an array between different .swift files in Swift如何在 Swift 中的不同 .swift 文件之间发送数组
【发布时间】:2016-12-16 10:05:37
【问题描述】:

我的viewcontrollerOne 中有一个二维数组。

var estRent = [
            ("Weekly Rent:", a),
            ("Monthly Rent:", b),
            ("Yearly Rent:", c),
               ]

第一个维度是常量,第二个维度是变量。我在ButtonAction 函数中声明它。当我单击按钮时,我想给变量值并将整个数组传递给另一个 .swift 文件。我已经知道如何通过按钮从viewcontroller 跳转。

但是如何同时将数组发送到 .swift 文件?

【问题讨论】:

  • 您的意思是当您更改页面时,您想将该数组发送到另一个 swift 文件(viewController?)?
  • 了解prepareForSegue
  • 这可能就是你要找的东西:stackoverflow.com/questions/7864371/…
  • 我的意思是当我单击一个按钮时,我想将数组从一个 swift 文件发送到另一个 swift 文件。按钮操作将更改视图控制器。我想在第二个 swift 文件中使用数组。
  • 当你在 Segue 的帮助下推送时,需要将数据传递给第二类变量或使用那里的模型类。需要了解模型类模式和导航模式。

标签: ios arrays swift swift2


【解决方案1】:

SecondViewController 上声明一个数组变量并像这样在按钮操作上传递值 -

var secondvc = SecondViewController();
secondvc.yourArray = estRent;

就是这样。

【讨论】:

  • 你好,如何在secondViewController中声明一个数组[String,String]?
【解决方案2】:

包含数组的第一个视图控制器:

class ViewController: UIViewController {

  var estRent = [ ("Weekly Rent:", 512), ("Monthly Rent:", 1024), ("Yearly Rent:", 12120)]

  override func viewDidLoad() {
    super.viewDidLoad()
  }

  override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let viewController = segue.destination as? SecondViewController {
      viewController.estRent = estRent
    }
  }

}

在您计划将数组发送到的第二个视图控制器中:

class SecondViewController: UIViewController {

  var estRent = [(String, Int)]()

  override func viewDidLoad() {
    super.viewDidLoad()
    print(estRent)
  }

}

【讨论】:

  • 您好,在“viewController.array = self.estRent”中,出现错误提示“无法将类型 [(String,String)] 的值赋给类型 [Any]”
  • 我也试过只发送数组[String],但是navigationController.topViewController有错误,如果我使用segue.destinationViewController,self.estRent有错误
猜你喜欢
  • 2019-09-08
  • 2014-10-02
  • 1970-01-01
  • 2023-03-05
  • 2017-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多