首页 > 解决方案 > 从另一个视图控制器调用函数以更新特定单元格

问题描述

在我的 SecondViewClass 中,每当通过在 ViewController 中调用 @objc func toReload() 来单击按钮时,我都会尝试更新 ViewController 类中的单元格 0。

SecondViewController 代码:

@IBAction func setFav(_ sender: Any) 
{

let storyboard: UIStoryboard = UIStoryboard.init(name: "toVC", bundle: nil)

let VC: ViewController = storyboard.instantiateViewController(withIdentifier: "toVC") as! ViewController

   VC.toReload(rowNumber: 0)

}

ViewController codes:


@objc func toReload(rowNumber: Int){
    reload = true

let indexPath = IndexPath(row: rowNumber, section: 0)
tableView.reloadRows(at: [indexPath], with: .none)
}

每当我单击按钮时,它都会给我一个线程错误

标签: iosswift

解决方案


这会创建一个新的 vc,而不是真实呈现的

let storyboard: UIStoryboard = UIStoryboard.init(name: "toVC", bundle: nil)
let VC: ViewController = storyboard.instantiateViewController(withIdentifier: "toVC") as! ViewController

并且当这个假的 vc 还没有加载导致 nil 异常时访问表

VC.toReload(rowNumber: 0)

你需要一个委托变量

weak var delegate:FirstVC?

当您呈现 SecondVc 时,将其设置为

let second = //
second.delegate = self
present/push(second

然后在里面使用这个setFav

delegate?.toReload(rowNumber: 0)

推荐阅读