在 table 视图单元格中委派
Delegete in table view cell
我有一个 table,cell
是使用 .xib
制作的。这个cell
上有两个view
。当我点击每个 view
时,我为另一个 viewController
设置 image 和 title。我为此制作了一个 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在这里没用。
我有一个 table,cell
是使用 .xib
制作的。这个cell
上有两个view
。当我点击每个 view
时,我为另一个 viewController
设置 image 和 title。我为此制作了一个 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在这里没用。