关于为啥我的数据没有被传递到新的表格视图的任何想法?

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

如何通过 segue 将图像传递到新的视图控制器?

当我构建我的项目时,Visual Studio 2008 没有创建 .exe 文件。任何想法为啥?

这段代码没有显示任何表格视图,为啥?