我遇到了这个问题,在附加的gif中你可以看到它:如果我点击UrgenzaViewController的行,它会回到Ho fumatoViewController,而我需要的是UITableViewCell中的Label" Urgenza"将使用UrgenzaViewController中按下的行标题进行修改。如何修改自定义单元格中的标签?谢谢大家
答案 0 :(得分:2)
在你的Urgenza视图控制器中,在你的文件顶部创建一个委托(在你的类声明上方,在import语句下面),如下所示:
protocol UrgenzaDelegate: class {
func menuItemSelected(item: String)
}
然后在你的Urgenza类声明中创建一个委托实例,如下所示:
weak var delegate: UrgenzaDelegate?
然后在didSelectRowAtIndexPath方法中,我会像这样调用委托方法:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if let delegate = delegate {
delegate.menuItemSelected(item: dataSource[indexPath.row])
}
}
替换' dataSource'使用您用于填充单元格标签的任何数据源。
最后,在初始视图控制器(Ho fumatoViewController)中,您需要符合刚刚创建的委托。你可以通过这样的扩展来实现这个目标:
extension fumatoViewController: UrgenzaDelegate {
func menuItemSelected(item: String) {
// Here is where you save the selected item to whatever data source you are using
tableView.reloadData()
}
}
最后,非常重要!无论你在哪里推动Urgenza视图控制器,你都必须将自己设置为它的委托属性,如下所示:
let vc = UrgenzaViewController()
vc.delegate = self // This is the important part!
self.present(vc, animated: true, completion: nil)