ios - 从另一个视图控制器调用函数以更新特定单元格
问题描述
在我的 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)
}
每当我单击按钮时,它都会给我一个线程错误
解决方案
这会创建一个新的 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)
推荐阅读
- neo4j - 在不复制现有关系的情况下更新 neo4j 关系属性
- linux - git clone 自带编辑过的文件
- mysql - Sequal Pro Connect 数据库 SSH 密钥对问题(尝试重置)
- vlc - VLC:将流保存到文件
- javascript - 用本地 json 文件填充 Tabulator 表
- c# - 在登录到 Blazor Server .Net Core 5 站点时在哪里设置会话变量?
- mysql - 简单插入到我们的 mysql8 安装中非常慢
- linux - 当我将 esp 移入 ebp 时,我在程序集中遇到分段错误(核心转储),我该如何解决这个问题?
- django - 如何在 django 的 html 页面中添加表单
- php - WordPress:将两个循环与不同数量的帖子结合起来