【问题标题】:How can I send data through a UIButton from a DetailViewController to a TableViewController?如何通过 UIButton 从 DetailViewController 将数据发送到 TableViewController?
【发布时间】:2021-02-20 04:38:24
【问题描述】:

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

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

【问题讨论】:

    标签: swift uitableview uikit uistoryboard


    【解决方案1】:

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

    1:在表格视图控制器中以编程方式定义 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()函数使新数据出现在tableView中。

    【讨论】:

    • 非常感谢——我相信我正在做你所说的,但我会做一些探索。也感谢 CoreData 的建议,我会调查的。我仍然有点不确定如何合并我的 UIButton
    • 在您的帮助下,我能够获得要显示的数据!我的下一个问题是,如何确保以前的条目保留在表格视图中?现在,如果我添加一部电影,然后再添加另一部电影,第一部电影就会消失。有没有办法可以在表格视图中保留以前的数据,以便可以存储多部电影?
    • 把我的数组放在课堂之外,让一切正常工作——谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 2020-04-16
    相关资源
    最近更新 更多