gpt4 book ai didi

ios - iOS 如何调用委托(delegate)和数据源方法?

转载 作者:行者123 更新时间:2023-11-28 06:05:33 24 4
gpt4 key购买 nike

例如,当我们创建 tableview 时,我们需要一些数据源方法,例如

 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return messageArray.count
}

我不会在任何地方调用它。但是,iOS 代替我执行此操作,我想知道 iOS 是如何执行此操作的?

iOS 搜索一个 TableView ,如果它在 View 上可用,则调用委托(delegate)和数据源方法,或者在我们声明 uiTableView.delegate = selfuiTableView.datasource = self。另一个是在 viewDidLoad?

之前调用的这些方法

最佳答案

一般来说,这是一个带有委托(delegate)的类的设置:

class SimpleTableView {
var delegate: SimpleTableViewDelegate?
// ...
func renderCell(at row: Int) { // called whenever the table needs to render a cell
let cell = SimpleTableViewCell()
cell.frame.size.height = delegate?.tableView(self, cellHeightForRow: row)
// continue rendering cell
}
}

SimpleTableViewDelegate 协议(protocol)包含委托(delegate)方法。它看起来像这样:

protocol SimpleTableViewDelegate {
func tableView(_ tableView: SimpleTableView, cellHeightForRow: Int) -> CGFloat
}

所以我们这里有一个类,SimpleableView,它从某个地方( View Controller )获取数据。这就是委托(delegate)发挥作用的方式:

class ViewController: UIViewController, SimpleTableViewDelegate {
var tableView = SimpleTableView()

override func viewDidLoad() {
tableView.delegate = self
}

func tableView(_ tableView: SimpleTableView, cellHeightForRow: Int) -> CGFloat {
return 44
}
}

本质上这就是委托(delegate)的工作方式,而这正是真正的 tableView 正在做的事情。您设置 tableView 委托(delegate),tableView 调用委托(delegate)方法从您那里获取信息。

希望这有助于向您解释委托(delegate)如何在这里工作、调用它的原因以及一般情况。如果您需要澄清,请随时提出!

关于ios - iOS 如何调用委托(delegate)和数据源方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48348405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com