首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift -来自TableView的协议委派不起作用-模式显示

Swift -来自TableView的协议委派不起作用-模式显示
EN

Stack Overflow用户
提问于 2018-01-02 16:15:22
回答 1查看 438关注 0票数 1

我有一个带有按钮的视图控制器,当单击该按钮时,它会转到另一个带有表视图的视图控制器。这两个场景通过故事板联系在一起,就像现在一样。我希望当在第二个视图控制器的表视图中选择一行时,第一个视图控制器中按钮的文本会发生变化。

当单元格被选中时,按钮不会发生变化,这是有原因的吗?

任何帮助都将不胜感激,我仍然是Swift的初学者。

以下是相关代码行:

视图控制器1

代码语言:javascript
复制
class ChartsViewController: UIViewController {

    @IBOutlet weak var titleButton: UIButton!

}

extension ChartsViewController: ModalDelegate {

    func didSelectValue(value: String) {
        self.titleButton.setTitle(value, for: .normal)
        }
}

视图控制器2

代码语言:javascript
复制
protocol ModalDelegate: class {
    func didSelectValue(value: String)
}

class DashboardModalViewController: UIViewController {
    var delegate: ModalDelegate?
}

extension DashboardModalViewController: UITableViewDelegate {
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let rowTitle = self.rows[indexPath.row].text
        print (rowTitle)
        delegate?.didSelectValue(value: rowTitle)
        dismiss(animated: true, completion: nil)

    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-02 16:24:02

我认为你需要在View Controller 1的prepare方法中为segue设置第二个控制器的委托,如下所示:

代码语言:javascript
复制
// MARK: - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let dashboardModalViewController = segue.destination as? DashboardModalViewController {
        dashboardModalViewController.delegate = self
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48057640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档