【发布时间】:2020-06-24 17:02:27
【问题描述】:
我有一张桌子,上面使用.xib 制作了cell。这个cell 上有两个views。当我单击每个view 时,我为另一个viewController 设置图像 和标题。我为此创建了一个protocol,但我无法在另一个viewController 上获取此数据,因为我的delegate = nil。
在这个类中,我设置了属性。
с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)
}
在这个类中,我得到并且想要设置这些属性,但是我的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)
}
}
如何正确声明委托?
【问题讨论】:
-
单元被重用并在
cellForRowAt中创建。变量dataVC没用。一种轻量级的 swifty 方法是在单元格中使用回调闭包。 -
你为什么使用 cell ?你有 tableView 吗?
-
是的,我在表格中使用了这个单元格。
标签: ios swift uitableview delegates cell