【发布时间】:2021-04-30 12:13:28
【问题描述】:
我有标签栏控制器,其中我有几个视图控制器,但我想将值数组(workoutNames)传递到我的标签栏控制器中的另一个视图。我想知道这样做的最佳选择是什么,我决定使用通过属性传递数据的方式。但是当我尝试检索数据时,我得到空数组。我也可以使用 firestore 在我的 Second View Controller 中检索数据,但它持续时间太长,所以我决定在视图之间传递数据,而不是每次都从 firestore 检索数据。
第一个视图控制器
class HomeTableViewController: UIViewController
// I need to pass this array to another view
var workoutsName: [String] = []
...
func sendDataToCalendar() {
// IN THIS FUNCTION I RETRIEVE DATA FROM FIRESTORE AND UPDATE ARRAY WITH VALUES
// After all I print this array to check if everything is correct, and my data is here
print("\(workoutsName)")
}
当我想使用第一个视图控制器中的数组时,这是我的第二个视图控制器
class CalendarViewController: UIViewController {
var arrayOfTitles = [String]()
.
.
.
func getArrayFromHome() {
let homeVC = HomeTableViewController()
homeVC.workoutsName = arrayOfTitles
// NOW I PRINT TO CHECK IF DATA EXISTS
print("\(arrayofTitles)"
}
而且它是空的,所以数据没有通过。
也许这不是传递数据的最佳方式,但主要思想是我需要在少数视图控制器中使用这个数组。这些控制器不会通过segue连接,所以我不能使用prepareforSegue。这不是一对一的关系(将来我将在少数控制器中需要这个数组),所以我不应该使用委托。我不认为通知也可以,所以我认为通过属性传递数据是最好的选择。但也许我错了,所以请纠正我。
【问题讨论】: