Swift 制作心愿单功能

Swift make wishlist feature

所以我想制作这个简单的心愿单功能,当用户点击“心形”按钮时,它会将该数据从视图添加到心愿单视图。就像这样:

所以当用户点击那个心形按钮时,该电影将显示在这个心愿单视图中,如下所示:

现在,我的问题是如何通知我的 wishlistVc,以便它知道用户从电影列表中点击了一个新的“愿望清单”。我有一个想法,我应该使用委托,但我仍然不知道在这种情况下如何实现委托。

并且我使用“var movieList”将所有数据存储在 HomeVc 中,我的想法是当用户点击 tableview 中的心形按钮时,用户点击的数据将移至我的“let wishlist”中,所以我可以将它填充到我的 wishlistVC 中(但我不知道该怎么做,所以我需要帮助)

到目前为止这是我的代码:

class DefaultTableViewCell: UITableViewCell {

    @IBOutlet weak var moviePosterImage: UIImageView!
    @IBOutlet weak var movieTitleLabel: UILabel!
    @IBOutlet weak var wishlistButton: UIButton!


    var indexPath: IndexPath!
    var delegate: DefaultTableViewDelegate?
    var wishlistFlag:Bool = false

    override func layoutSubviews() {
        super.layoutSubviews()
        wishlistButton.titleLabel?.text = ""
        
        wishlistButton.addTarget(self, action: #selector(wishlistTapped(_:)), for: .valueChanged)
    }


    @IBAction func wishlistTapped(_ sender: UIButton) {
        wishlistFlag = !wishlistFlag
        delegate?.wishlistTrigger(row: indexPath.row)
        
        if wishlistFlag == true {
            wishlistButton.setImage(UIImage(named: "heart_fill"), for: .normal)
        }else if wishlistFlag == false {
            wishlistButton.setImage(UIImage(named: "heart"), for: .normal)

        }
    }
}

HomeVc(显示电影列表的vc):

var movieList : [Movie] = []

extension HomeVC: UITableViewDataSource, UITableViewDelegate {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return movieList.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let data = movieList[indexPath.row]
        let cell = tableView.dequeueReusableCell(withIdentifier: "DefaultTableViewCell", for: indexPath) as! DefaultTableViewCell

        cell.indexPath = indexPath

        cell.movieTitleLabel.text = data.title
        cell.moviePosterImage.sd_setImage(with: data.imageUrl)
        cell.delegate = self

        return cell
    }
}

protocol DefaultTableViewDelegate {
    func wishlistTrigger(row: Int)
}

这是我的心愿单Vc:

let wishlist : [Movie] = []
extension WishlistVc: UITableViewDelegate, UITableViewDataSource {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return wishlist.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let data = wishlist[indexPath.row]
        let cell = tableView.dequeueReusableCell(withIdentifier: "DefaultTableViewCell", for: indexPath) as! DefaultTableViewCell

        cell.movieTitleLabel.text = data.title
        cell.moviePosterImage.sd_setImage(with: data.imageUrl)
        cell.wishlistButton.titleLabel?.text = ""
        cell.indexPath = indexPath

        return cell
    }
}

卡了整整2天了,还是不知道怎么解决。我感谢任何能帮助我的人。谢谢

像这样实现函数:

func wishlistTrigger(row: Int) {
    self.myWishlistedItem.append(self.movieList[row]) //Add that wishlisted item in array
   self.tableView.reloadData() //Now reload Table
}