在 table 视图单元格中委派

Delegete in table view cell

我有一个 table,cell 是使用 .xib 制作的。这个cell上有两个view。当我点击每个 view 时,我为另一个 viewController 设置 imagetitle。我为此制作了一个 protocol,但我无法在另一个 viewController 上获取此数据,因为我的 delegate = nil.

在这个class中,我设置了属性。

сlass DataTableViewCell: UITableViewCell {

var dataDelegete: DataAccountCellDelegete? = nil

 @objc func accountViewTaped() {
        dataDelegete?.navigationBarIcon(image: UIImage(named: "icon") ?? UIImage())
        dataDelegete?.navigationBarTitle(title: "title")
        
        
    }
    @objc func settingsViewTaped() {
        dataDelegete?.navigationBarIcon(image: UIImage(named: "icon") ?? UIImage())
        dataDelegete?.navigationBarTitle(title: "title")
    }
    
}
protocol DataAccountCellDelegete {
    func navigationBarIcon(image: UIImage)
    func navigationBarTitle(title: String)

}

在这个 class 中,我得到并想要设置这些属性,但是我的 delegate = nil

class AccountViewController: UIViewController {

var dataVC =  DataTableViewCell()

    override func viewDidLoad() {
        super.viewDidLoad()
        
       dataVC.delegete = self   
    }
}
extension AccountViewController: DataAccountCellDelegete{
    func menuNavigationBarIcon(image: UIImage) {
      menuNavigationBar.addImage(image)
    }
    
    func menuNavigationBarTitle(title: String) {
        menuNavigationBar.addTitle(title)
    }
}

How do I declare a delegate correctly?

视图层次应该像

ViewController -> TableView -> TableViewCell

因此,ViewController 具有 TableView 的引用 & TableView 具有单元格的引用。所以数据传递应该是相反的。

TableViewCell -> TableView -> ViewController

正如 vadian 所说,单元格在 cellForRowAt 中被重用和创建。变量dataVC在这里没用。