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

How can I send data through a UIButton from a DetailViewController to a TableViewController?

我正在 Swift 使用故事板创建一个电影应用程序,您可以在其中搜索电影并将它们添加到您的电影 collection。我有一个 table 视图控制器,您可以在其中搜索电影,还有一个在 table 视图中单击电影时的详细视图控制器。我希望能够在搜索电影后将数据从 ViewController 发送到 different table 视图控制器,这是用户的 collection 电影。

我正在使用“添加电影”按钮执行此操作,但我不确定如何将这些元素实际添加到我的其他 table 视图控制器。如何使用此方法发送此数据并将元素添加到我的 table 视图?我相信我需要一个 segue 或 delegate 但我不太确定这在实践中会是什么样子,因为我是 Swift 的新手并且因为只向 table 添加元素会增加复杂性单击按钮时查看。任何帮助将不胜感激。

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

1:在您的 table 视图控制器中以编程方式定义一个 segue。

    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( ) 函数使新数据出现在 table 视图中。