【问题标题】:Swift: Unable to communicate data between view controllers when using present [closed]Swift:使用存在时无法在视图控制器之间传递数据[关闭]
【发布时间】:2021-03-12 07:35:35
【问题描述】:

我已经以编程方式实现了这些。

TableViewCell:

class TableViewCell: UITableViewCell{

    var moviesItems: [Document] = []

    @objc func didPressVoirToutButton() {
        print("Voir tout button was pressed.")
        let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
           let vc: VoirToutViewController = storyboard.instantiateViewController(withIdentifier: "VoirToutViewController") as! VoirToutViewController
           self.viewController?.present(vc, animated: false, completion: nil)
           print("moviesItemsArray being communicated to moviesItems",moviesItems) 
           // moviesItems is not empty
            vc.voirToutMoviesItemsArray=self.moviesItems
    }
}

VoirToutViewController:

class VoirToutViewController: UIViewController {
    var voirToutMoviesItemsArray : [Document]?
}

我正在尝试通过将moviesItems 设置为voirToutMoviesItemsArray 来将TableViewControllerVoirToutViewController 通信。

问题VoirToutViewController.voirToutMoviesItemsArray 始终为空。
知道我做错了什么吗?

【问题讨论】:

  • 你确定moviesItems 本身不是空的吗? self.viewController 是什么?你为什么不直接做self.present(...)
  • 您没有显示所有相关的代码行。我们怎么知道 VoirToutViewController 没有收到 voirToutMoviesItemsArray?
  • @Sweeper 是的,moviesItems 不为空,因为它已正确记录。 TableViewController 实际上是我的代码中的 tableViewCell 这就是我使用 self.viewController 的原因? .我会解决的
  • @ElTomato 因为我将它登录到 ViewDidLoad 并且它是空的
  • 在执行self.viewController?.present(vc, animated: false, completion: nil)之前执行此vc.voirToutMoviesItemsArray=self.moviesItems

标签: ios swift uiviewcontroller viewcontroller tvos


【解决方案1】:

它是 nil 因为你在初始化它的值之前呈现了 vc。修复:

放置这一行

vc.voirToutMoviesItemsArray=self.moviesItems

在这之前

self.viewController?.present(vc, animated: false, completion: nil)

【讨论】:

  • 感谢您解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-20
  • 2015-12-28
  • 2014-08-05
相关资源
最近更新 更多