gpt4 book ai didi

ios - tableView 委托(delegate)和数据源

转载 作者:行者123 更新时间:2023-11-28 05:31:21 25 4
gpt4 key购买 nike

我正在学习 Swift。有时我看到 Main.Storyboard 用于设置 tableView delegatedataSource(ctrl+click 等)。有时我看到它是通过编码而不是像这样完成的:

// create the variable for the tableview
IBOutlet weak var someTableView : UITableView!
// setup delegate and datasource
sefl.someTableView.delegate = self
self.someTableView.datasource = self

我确实了解第二种方式的工作原理。但是在没有 IBOutlet 设置的情况下,很难通过 Main.Storyboard 了解它是如何工作的。

感谢您的回复!

最佳答案

它的工作方式完全一样:)

让我重温一下原理:

你有一个类,在这种情况下由 Apple 提供,它必须适用于很多场景。 Apple 决定使用一种称为委托(delegate)的反转控制,其中工作流是反转的(因此得名):不是 View Controller 通过调用 tableView 的方法来向 tableView 发出命令,而是 tableView 去获取它的通过调用 Controller 上的方法从 Controller 发出命令。为了实现这种 IoC(控制反转),TableView 必须知道它必须询问其顺序的对象的“地址”。就像您必须知道老板的电子邮件地址才能向他询问事情一样。因此,UITableView 类作为一个名为 dataSource 的属性,表示存储该地址。现在,作为 ViewController 程序员,您必须将此属性设置为 View Controller 的地址,该地址将向该 tableview 发出命令。2 种方法:

在代码中:在 View Controller 中,您有一个指向 TableView 的属性(如果从 Storyboard链接,它确实被称为 IBOutlet,但不一定是)并且您将它的委托(delegate)属性设置为 self。 (意思是'嘿 tableView,你的老板是我自己)

或者您在 Storyboard 中执行此操作,因为 tableView 的图形模板允许您按住 ctrl 并从 tableView 拖动到 ViewController 并设置数据源连接。在这种情况下, Storyboard必须找到 tableView 的地址(因为它是创建它的人,所以这很容易)并将其委托(delegate)属性设置为 View Controller 的地址(意思是嘿 tableView,你的老板就是这个人)

无论哪种方式,viewController 都必须准备好回答来自 TableView 的所有问题,因此符合 UITableViewDataSource 协议(protocol)。委托(delegate)场景相同。

关于ios - tableView 委托(delegate)和数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28108926/

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