我正在传递数据从一个表视图到另一个。我希望tableviewA包含的类别数据传递给tableviewB。执行segue时,我为TableviewB准备的打印数据是空的
这是tableviewA
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let category = listOfCategories[indexPath.row].strCategory
let vc = MealsByCategoryVC()
vc.mealCategory = category
print(category) // Properly returns the category
performSegue(withIdentifier: "searchMeals", sender: nil)
}
这是tableview2
class MealsByCategoryVC: UITableViewController {
var mealCategory : String = ""
var listOfMeals : [Meals] = []
override func viewDidLoad() {
super.viewDidLoad()
print("Meal category is (mealCategory)") //This statement returns "Meal category is "
}
This:
let vc = MealsByCategoryVC()
vc.mealCategory = category
performSegue(withIdentifier: "searchMeals", sender: nil)
…不是你如何传递一个值到你通过调用performSegue
创建的视图控制器。该代码的前两行什么也没做!segue创建的视图控制器是不同于你通过MealsByCategoryVC()
创建的视图控制器;事实上,后者只是被扔掉,毫无用处。您正在设置错误的视图控制器实例的mealCategory
。
改为实现prepare(for:sender:)
。这就是它的作用。你接收segue和它的目标视图控制器。那个是你需要设置其mealCategory
的视图控制器。