关于为啥我的数据没有被传递到新的表格视图的任何想法?
Posted
技术标签:
【中文标题】关于为啥我的数据没有被传递到新的表格视图的任何想法?【英文标题】:Any idea as to why my data isn't being passed to the new tableview?关于为什么我的数据没有被传递到新的表格视图的任何想法? 【发布时间】:2021-12-13 04:34:18 【问题描述】:我正在将数据从一个 tableview 传递到另一个。我希望将 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 "
【问题讨论】:
【参考方案1】:这个:
let vc = MealsByCategoryVC()
vc.mealCategory = category
performSegue(withIdentifier: "searchMeals", sender: nil)
...不是将值传递给通过调用performSegue
创建的视图控制器的方式。该代码的前两行根本没有做任何事情! segue 创建的视图控制器与您通过说MealsByCategoryVC()
创建的视图控制器不同;事实上,后者只是被扔掉了,没用的。您正在设置错误视图控制器实例的mealCategory
。
改为实现prepare(for:sender:)
。这就是它的用途。您会收到 segue 及其目标视图控制器。 那个是你需要设置mealCategory
的视图控制器。
【讨论】:
以上是关于关于为啥我的数据没有被传递到新的表格视图的任何想法?的主要内容,如果未能解决你的问题,请参考以下文章
将数据从 Table View Cell 传递到 IOS 中的 View Controller