【问题标题】:Pass data to viewController将数据传递给 viewController
【发布时间】:2020-09-07 20:52:30
【问题描述】:

我想将动态数据从一个视图控制器传递到另一个。通常我会这样做,假设我有

//FirstVC
let dataArr = ["2,5","5,1"]
//In SecondVC declared this var
var array: [String]()
//From VC one I pass it like this
let vc = SecondVC()
vc.array = dataArr
self.navigationController?.pushViewController(vc, animated: true)

没关系,我正在检索 SecondVC 中的数组。问题是,如果这些数组是动态的并且其中有多个,我该如何传递多个数据呢?例如

let dataArr = ["2,5","5,1"]
let dataArr = ["2","5"]
let dataArr = ["2,2","1,1"]

等等任何想法如何通过它们?先谢谢了

【问题讨论】:

  • “动态和多重”是什么意思?呈现第二个视图控制器后,它会随着时间的推移而变化吗?还是您想使用第二个视图控制器更改它并将结果发送回第一个控制器?
  • @LeoDabus 我的意思是数组的数量是未知的
  • dataArr: [[Int]]

标签: arrays swift viewcontroller


【解决方案1】:

您可以像这样存储 Ints 或字符串数​​组...

字符串

let dataArray = [["2", "5"], ["5", "1"]]

整数

let dataArray = [[2, 5], [5, 1]]

或者您可以创建一个名为 twoInts 的结构体,并将其存储为类型为 twoInts 的数组

代码如下所示

struct twoInts {
    var intOne: Int!
    var intTwo: Int?

    init(intOne: Int, intTwo: Int?) {
        self.intOne = intOne
        self.intTwo = intTwo
    }
 }

然后将其存储为 twoInt 的数组

let dataArray = [twoInts(2, 5), twoInts(5, 1)]

然后单独访问它们

let firstNumber = dataArray[0].intOne // returns 2
let secondNumber = dataArray[0].intTwo! // return 5, intTwo is optional

【讨论】:

    猜你喜欢
    • 2018-03-21
    • 2012-11-01
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多