gpt4 book ai didi

ios - UIPickerView数据源x委托(delegate)设计

转载 作者:行者123 更新时间:2023-11-30 13:29:51 24 4
gpt4 key购买 nike

我发现 UIPickerViewDelegate 包含需要了解其数据(标题)的方法非常奇怪,或者说是一个糟糕的设计决策。因为这就是其 DataSource 的全部目的。像这些:

pickerView(_:titleForRow:forComponent:)
pickerView(_:attributedTitleForRow:forComponent:)
pickerView(_:viewForRow:forComponent:reusingView:)

我想为 DataSourceDelegate 实现一个具有不同对象的 PickerView。当然,创建一个新的委托(delegate)很容易,可以将其命名为 PickerViewListenerDelegate。但由于苹果做出了这个设计决定,我认为值得首先讨论一下。

这个奇怪的设计决策有何意义?我在这里遗漏了什么吗?

最佳答案

UIPickerViewDataSource 协议(protocol)仅解决数据源的直接属性,即组件数量和每个组件中的行数。

UIPickerViewDelegate 协议(protocol)处理演示。它提供大小、标题或 View ,以及选择更改的回调。

如果我们将其与 UITableViewDataSourceUITableViewDelegate 进行比较,奇怪的是,模式完全不同。

通常,delegatedataSource 都会连接到同一个对象,即 View Controller ,它将调用路由到底层模型并构造所需的 UI元素。就我个人而言,我认为将数据源连接到数据模型,但将委托(delegate)连接到 Controller - 做出了一个奇怪的决定,很容易破坏封装。

所以基本上这意味着:是的,您可以使用给定的模式在此处区分模型和表示(即格式化程序)。如果您觉得它有用,那就取决于您了。

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

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