将数据传递给 viewController

Posted

技术标签:

【中文标题】将数据传递给 viewController【英文标题】:Pass data to 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]] 【参考方案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

【讨论】:

以上是关于将数据传递给 viewController的主要内容,如果未能解决你的问题,请参考以下文章

将数据传递给服务 - android?

vue js将数据传递给组件

如何通过数组将数据传递给表格视图?

意图不将数据传递给 AlarmManager 的 BroadcastReceiver

通过变量与 Getter 将数据传递给组件之间的区别

使用 performSegue 将数据传递给目标视图控制器