gpt4 book ai didi

ios - 如何从另一个 ViewController 修改 UITableView 的单元格

转载 作者:可可西里 更新时间:2023-11-01 01:09:30 25 4
gpt4 key购买 nike

在 VC#1 中,我有一个 UITableView。当我点击一个单元格时,我将被带到 VC#2,其中显示有关该单元格的信息。

我希望能够在 VC#2 中按下一个按钮来更改它在 VC#1 中对应的单元格的标题,但我对如何执行此操作感到困惑?

我是否应该在 VC#2 中创建一个变量来保存被点击的单元格的 indexPath,然后从 VC#2 调用 VC#1 中使用该 indexPath 更新单元格的函数?如果我这样做,VC#1 不需要是静态的,所以我知道我正在修改 VC#1 的正确实例吗?我正在使用推送 segue 和导航 Controller 返回,所以创建 VC#1 的新实例不会像我相信的那样引用我试图修改的同一个 VC?

有更简单的方法吗?

最佳答案

您应该使用委托(delegate)模式。

VC1 应该知道 VC2 显示的是哪个单元格。您应该在 VC1 中有一个 IndexPath 属性,用于存储 VC2 当前显示的单元格,对吗?

现在,创建一个名为 VC2Delegate 的协议(protocol):

protocol VC2Delegate : class {
func titleDidChange(_ vc2: VC2, to title: String)
}

现在,在 VC2 中添加这个属性:

weak var delegate: VC2Delegate?

现在,当您认为单元格的标题应该更改时,调用委托(delegate):

delegate?.titleDidChange(self, to: "Some Title")

这就是 VC2 的全部内容。

让VC1符合VC2Delegate:

extension VC1: VC2Delegate {
func titleDidChange(_ vc2: VC2, to title: String) {
// set the text of the table cell here...
}
}

现在,当您将数据从 VC1 传递到 VC2 时,可能在 prepareForSegue 方法中,执行

vc2.delegate = self

了解有关委托(delegate)的更多信息 here .

关于ios - 如何从另一个 ViewController 修改 UITableView 的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48505991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com