如何通过UIButton将数据从DetailViewController发送到TableViewController?

问题描述

我正在使用Storyboard在Swift中创建一个电影应用程序,您可以在其中搜索电影并将其添加到电影收藏中。我有一个表格视图控制器,您可以在其中搜索电影,而在该表格视图中单击电影时,有一个详细视图控制器。搜索电影后,我希望能够将数据从ViewController发送到不同表格视图控制器,这是用户的电影收藏。

我正在使用“添加电影”按钮来执行此操作,但是我不确定如何将这些元素实际添加到其他表视图控制器中。如何使用此方法发送数据并将元素添加到表视图中?我相信我需要一个segue或委托,但是由于我是Swift的新手,并且由于单击按钮时仅向表视图添加元素的复杂性,因此我不太确定这种做法在实际中的外观。任何帮助将不胜感激。

解决方法

您可以像这样通过视图控制器传递数据:

1:在表视图控制器中以编程方式定义序列。

    if let vc = storyboard?.instantiateViewController(identifier: "insert your view controller identifier") as? DetailViewController {
        navigationController?.pushViewController(vc,animated: true)
               //vc.yourVariable = data
        }
    }

2:在detailViewController上写一个变量

var yourVariable = ""

3:在您的segue中,添加:

vc.yourVariable = data

这就是什么,只要您调用转换函数,就可以在其他视图控制器中为用户选择的任何电影设置变量。

如果要将这部电影添加到列表中,请创建一个数组,然后将用户选择的电影附加到此数组中。

听起来您还需要某种方式来保留数据。我建议调查CoreData,以便在所有会话中继续存储所有数据的数组。

要将数据添加到tableView中,您需要编辑显示tableView的数据(例如数组),然后调用tableView.reloadData()函数以使新数据出现在tableView中。