首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

UICollectionView/UITableView委托/数据源函数在Clean Swift中应该放在哪里[Bob叔叔的Clean Architecture]

在Clean Swift中,UICollectionView/UITableView的委托和数据源函数应该放在ViewController中。

Clean Swift是一种基于VIP(View-Interactor-Presenter)架构的软件设计模式,旨在实现代码的可读性、可维护性和可测试性。根据该架构,ViewController负责处理用户界面的展示和用户交互,因此应该包含与UICollectionView/UITableView相关的委托和数据源函数。

在ViewController中,可以通过实现UICollectionViewDelegate、UICollectionViewDataSource、UITableViewDelegate和UITableViewDataSource等协议来处理委托和数据源函数。这些函数包括但不限于:

  1. UICollectionViewDelegate:
    • collectionView(_:didSelectItemAt:):当用户选择某个UICollectionViewCell时调用。
    • collectionView(_:layout:sizeForItemAt:):返回每个UICollectionViewCell的大小。
  • UICollectionViewDataSource:
    • collectionView(_:numberOfItemsInSection:):返回指定section中的UICollectionViewCell数量。
    • collectionView(_:cellForItemAt:):返回指定位置的UICollectionViewCell。
  • UITableViewDelegate:
    • tableView(_:didSelectRowAt:):当用户选择某个UITableViewCell时调用。
    • tableView(_:heightForRowAt:):返回指定位置的UITableViewCell的高度。
  • UITableViewDataSource:
    • tableView(_:numberOfRowsInSection:):返回指定section中的UITableViewCell数量。
    • tableView(_:cellForRowAt:):返回指定位置的UITableViewCell。

这些委托和数据源函数的具体实现将根据项目的需求而定,可以根据业务逻辑进行相应的处理。

在腾讯云的相关产品中,可以使用云服务器(CVM)来搭建后端服务,使用云数据库(CDB)来存储数据,使用云存储(COS)来存储多媒体文件等。具体的产品介绍和链接地址可以参考腾讯云官方文档:

请注意,以上答案仅供参考,具体的架构设计和产品选择应根据实际需求和项目要求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WWDC20iOS改变

WWDC20,绝大部份同学都会把注意力放在了iOS布局改变和自研芯片上,这方面的文章也比较多,但作为一名开发者,更多聚焦iOS官方语言和官方库上来,这里仅找出几个更新比较大点给大家分享。...data sources介绍数据源方面的工作 值得一提是,UICollectionView升级是2019年开始,所以20分享更多19基础上,对这方面感兴趣同学可以从19开始看,这里推荐一篇文章...刷新数据源时,只要重新计算diff,计算进行局部刷新,可以大大提高UICollectionView性能。...modern collectionview 也引入了新DiffableDataSource概念,我们不再需要设置Datasource通过一系列数据源方法返回,而是通过一开始绑定,通过snapshot...今年API增加了Catalyst对iOS处理物理键盘事件支持,这对设备用户行为上报是个利好消息,此外,tvOS焦点引擎API现在可用于Mac Catalyst应用程序,UICollectionView

1.8K10

手把手带你撸一个网易云音乐首页(一)

前言 Hello,大家好,近期我一直在学习用 Swift 编码,由于之前很多项目我都是用 OC 实现,所以导致我现在对 Swift 还是处于一个学习阶段。...” API, 无需我们进行多个接口调用以及数据源拼接,就可一获取首页全部数据啦!...,接下来就是该解决如何将数据可视化了,从网易云音乐首页展示效果分析来看,整体视图支持上下滚动,其中单个 Cell 视图支持横向滚动,所以这里采用 UITableView 嵌套 UICollectionView...方式应该来说再合适不过了。...: image 具体实现细节我会在下篇文章阐述,功能会按照我上述列出来功能顺序来一一实现,同时我也会将该工程代码放在GitHub仓库上。

1K20
  • 【IOS开发基础系列】UICollectionView专题

    : numberOfItemsInSection:     • 对于某个位置应该显示什么样cell -collectionView: cellForItemAtIndexPath:         实现以上三个委托方法...1.3 关于重用         为了得到高效View,对于cell重用是必须,避免了不断生成和销毁对象操作,这与UITableView情况是一致。...但值得注意时,UICollectionView,不仅cell可以重用,Supplementary View和Decoration View也是可以并且应当被重用。...iOS5,Apple对UITableView重用做了简化,以往要写类似这样代码: UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier...这个特性很受欢迎,因此UICollectionViewApple继承使用了这个特性,并且把其进行了一些扩展。

    72330

    窥探Swift之协议(Protocol)和委托代理(Delegate)回调使用

    说到协议,Objective-C也是有协议,并且Swift协议和Objc协议使用起来也是大同小异Java等现代面向对象编程语言中有接口(Interface)概念,其实和Swift或者...一.从UITableView来窥探协议委托代理回调     UITableView这个高级控件iOS开发出镜率是比较高,今天重点不是介绍如何使用UITableView, 而是让通过UITableView...上显示数据了,正常开放这些数据往往来源于网络请求,而在本篇博客中就模拟数据源,来为我们TableView提供显示数据。...上面实例意思就是把下一个页面的值通过委托代理回调形式传到上个页面中去,在前面的博客《窥探Swift函数与闭包应用实例》也做了同样事情,不过之前我们是使用闭包(Closure)回调来实现。...紧接着我们要实现一个协议,这个协议我们用来所委托回调使用。这个协议可以定义EditViewController.swift源文件协议定义之前,先对什么是协议简单提上一嘴。

    3.5K80

    持续学习杂谈:阅读前言IT行业知识结构最近阅读列表阅读经验

    前言 最近在阅读Bob大叔新书——《Clean Architecture》(需要同学可以公众号后台回复数字1获取),感觉字字珠玑,值得反复阅读&品味。...IT行业知识结构 忘记在哪里看过一篇文章还是问题,是讲“工作后如何持续学习”,文中观点我很认同:在这个信息爆炸时代,需要有所取舍和选择。...基础知识 《Effective Java》第三版,比较与第二版不同 《Http2基础教程》,学习最新技术 《揭秘Java虚拟机:JVM设计原理与实现》 宏观知识 《Clean Architecture...,假装你是在给一个伙伴讲这段话意思。...希望今年能够做更多精读和总结,利用XMIND做几个领域知识架构,并在实践尝试实践下书中观点。

    1.1K10

    教你写个多表视图

    把当前控制器作为一个父控制器,添加三个UITableViewController实例作为子控制器,把父控制器 scrollView 作为容器,然后添加子控制器 tableView 作为子视图...解决办法是可以自己写个重用机制,不过这显然没必要,用自带重用机制UICollectionView应该是个更好选择。...因为这边只是个 Demo,所以我直接在 cell 显示cellData值,那cellData 值在哪里设置呢?...显然是HomeContainerViewController: let tableViewDataList = ["first table", "second table", "third table...这边 cell 是会被复用翻到第三页时,会复用第一页 cell ,第四页复用第二页 cell……依此类推,所以需要给 cell tableView调用 reloadData方法,不然就算改变了表数据

    1.3K30

    iOS14开发-UIView

    子 View 顺序和子 View 返回数组位置有关(storyboard 左侧树形结构图中先后顺序)。...直接在 storyboard 布局,不需要使用数据源方法,但如果需要使用到代理方法,仍然需要在控制器实现相应方法。 适用于基本不需要动态修改、布局固定页面,如个人中心、设置等。...UITableViewDiffableDataSource iOS 13 引入了新 API — Diffable Data Source,它不仅能够驱动 UITableViewUICollectionView...NSCollectionLayoutAnchor Item ,可能需要给其加上小红点或者未读消息数等附加视图, UICollectionViewCompositionalLayout ,可以通过...iOS 14 UICollectionView 功能得以继续增强,可以在一定程度上替换 UITableView

    11.8K10

    iOS 列表界面如何优雅实现模块化与动态化

    业务痛点 iOS 界面开发 UITableView / UICollectionView 出场率极高,它们都是使用代理方法配置数据源,虽然这样设计理念符合了单一职责原则,但在列表变得复杂时代理方法处理将变得力不从心...图1 代码简单轻量 YBHandyList 保留最小功能,代码量很少,核心思路就一句话:将 UITableView / UICollectionView 数据源从代理方法配置转化为数组配置。...直观动态化控制 构建界面只需要关注所有id在数据源数组顺序,就像搭积木一样拼接起来,数组顺序就是对应 Cell 界面显示顺序,由此就能通过改变数据源数组顺序轻易实现动态化控制...实际上只需要将具体业务处理逻辑抽离出来,处理过后再放在 ViewModel ,Cell 拿到 ViewModel 再进行具体业务无关界面刷新。如此,ViewModel 将可以在任何地方复用。...YBHandyList 通过继承默认代理实现类就能拓展实现其它 UITableView / UICollectionView 代理方法。

    1.5K20

    iOS开发常用之网络

    此项目应该只用于演示或学习之用,没有服务器 - swift。 Atlas-iOS - 快速iOS里集成聊天功能,类似开源版本环信.Layer家开源了一套聊天app界面的解决方案。...LLNoDataView - 超简单空数据提示通用View支持UIScrollView,UITableViewUICollectionView,UIWebView。...MGSwipeTableCell - 另一个常见于很多应用UI组件,苹果应该考虑标准iOS SDK中加入一些类似的内容.Swipeable表格cell是这个pod最佳描述,也是最好。...JHChainableAnimations - 应用采用链式写出酷炫动画效果,使代码更加清晰易读,利用block实现链式编程。...组件使用方便,自然(只需设置集合视图数据源标准方式即可)。 KYShareMenu - 带弹性动画分享菜单。

    23.6K10

    学以致用:语言模型重塑教育作用

    今天,我朋友格雷格·威尔逊(Greg Wilson)将 tidyverse/Pandas 习语翻译成 SQL 时,问我以下问题: 好吧,我 SQL 哪里错了?...对于 did 表没有的组合(如您示例 Bob 和“clean”),会显示 0 次。...我上一份工作,我写了很多SQL,我当前工作我也写了很多。在上一份工作,我从未发现过对 cross join 需求。...使用Steampipe时,我许多示例查询遇到了这种习语,但从未以这种简单形式出现过。Steampipe查询通常会将 cross join 与返回集JSONB函数结合使用,以我难以想象方式。...当你得到一个能够报告上述数据脚本时,自己运行以进行验证,并包含该脚本。 现在回答这个问题:SQL输出如何包括这一行? Bob clean 0 这不在数据,它从哪里来?

    8110

    iOS-代码规范

    iOS 中委托设计 ---- 1. 要区分好代理和数据源区别 iOS开发委托模式包含了delegate(代理)和datasource(数据源)。虽然二者同属于委托模式,但是这两者是有区别的。...这个区别就是二者信息流方向是不同: delegate :事件发生时候,委托者需要通知代理。(信息流从委托者到代理) datasource:委托者需要从数据源拉取数据。...(信息流从数据源委托者) 然而包括苹果也没有做好榜样,将它们彻底区分开。...UITableViewDataSource,就有标准数据源方法: - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView...但是个别的时候,必须在头文件引入其他类头文件: 主要有两种情况: 该类继承于某个类,则应该引入父类头文件。 该类遵从某个协议,则应该引入该协议头文件。而且最好将协议单独放在一个头文件

    2.2K20

    iOS 代码规范

    iOS 中委托设计 1. 要区分好代理和数据源区别 iOS开发委托模式包含了delegate(代理)和datasource(数据源)。虽然二者同属于委托模式,但是这两者是有区别的。...这个区别就是二者信息流方向是不同: delegate :事件发生时候,委托者需要通知代理。(信息流从委托者到代理) datasource:委托者需要从数据源拉取数据。...(信息流从数据源委托者) 然而包括苹果也没有做好榜样,将它们彻底区分开。...UITableViewDataSource,就有标准数据源方法: - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView...但是个别的时候,必须在头文件引入其他类头文件: 主要有两种情况: 该类继承于某个类,则应该引入父类头文件。 该类遵从某个协议,则应该引入该协议头文件。而且最好将协议单独放在一个头文件

    2.4K20

    浅析整洁架构之道(二) 初步了解The Clean Architecture

    ,就笔者用过几个语言,Java,TypeScript,Kotlin,Swift等,均可以使用上述The Clean Architecture 所以,理所当然,它更不会与具体技术框架相关联。...事实上,技术是实现细节,这个图中环型最外层,也就是The Clean Architecture认为它是最不重要一层。...The Clean Architecture分层及依赖原则 3.1 The Clean Architecture分层 从图所示可以看出,The Clean Architecture大致上可以分为以下几个层...后续笔者再来论述这几个层,在这之前,先明确一个黄金原则,也就是依赖原则 3.2 The Clean Architecture黄金原则 讲述其它原则之前,有一个必须要明确原则: The Clean...在这个架构,具体技术,框架。比如数据库,网络框架等,是最外层。也就意味着你项目中,核心业务不能调用知道任何与类似JPA或HibernateAPI调用。 很多人会问,怎么做到?

    1K10

    【译】Android开发MVP架构

    如果一个类需要花费时间从其他类通过Get()和Set()检索数据(也就是说,需要深入业务并且告诉它们如何去做),所以是否应该把这些功能函数更好组织到其它类而不是上帝类。...Uncle Bob“The Clean Architecture”描述了依赖规则是什么。 同心圆将软件划分为不同区域,一般,随着层级深入,软件等级也就越高。...总结 这里没有万能药,而且MVP也仅仅是解决方案之一,它可以与其他方法协同使用,同样,也可以有选择用于不同项目。 链接和资源 The Clean Architecture(译者注:清晰架构。...译文) - Uncle Bob 这篇文章由Uncle Bob撰写,描述了依赖规则样子和它们之间组件是如何工作。...Architecting Android…The clean way? (译者注:Android清晰架构。

    51820

    KVO、Delegate、Notification 区别及相关使用场景你要知道KVC、KVO、Delegate、Notification都在这里

    实际开发需要在View和Controller之间进行通信,也需要跨Controller进行通信,上述三种方式都是为了通信而生,这三种方法都能够减少耦合,使得View或是Controller能够自包含...,它提供了一种模型属性值一旦修改视图可以立即按需求修改功能,其优点有: 创建监听器实现简单,只需要注册后实现回调函数即可 能够实现多对一监听,多个对象可同时监听同一个对象属性值变化 KVO提供了监听新值以及旧值方法...,我们最常用应该就是委托模式了,UITableViewUICollectionView等等,委托模式提供了两种实现方式,一种是事件代理,一种是数据源代理,我们可以通知委托对象针对相关事件进行响应...提供事件响应代理模式 提供数据源代理模式 即时没有委托对象也不会产生异常 其缺点有: 规范化带来了实现上复杂,必须遵守协议并实现所有方法 只能实现一对一通信,如果多个对象都委托同一代理,为了区分不同委托对象...,监听器对象可以接收到通知信息,但发送通知对象实现了隐藏,无法得知具体发送对象,iOS很多系统控件都会发送相关通知,最常见的如键盘,包括应用程序状态等,其优点有: 创建通知监听器简单,只需注册后实现监听放法即可

    1.4K110

    手把手带你撸一个网易云音乐首页(三)

    具体实现该效果代码在这里我就不做多阐述了,因为我之前文章,我已经将实现这个效果教程写出来了,查看此文即可:使用 UICollectionView 实现首页卡片轮播效果 圆形菜单入口 该效果实现起来很简单...我们知道 UICollectionView 属性,有一个分页属性:isPagingEnabled,当设置成 true 时,每次滚动位移量等于它自身 frame 宽度;当不设置这个分页属性,它默认值是...,决定了 UICollectionView 停止滚动时偏移量,可以通过重写这个函数来实现自定义分页滚动,重写这个函数逻辑思路如下: 定义一个坐标点 CGPoint 来记录最新滚动偏移坐标 定义俩个值分别为...这里就需要来实现 UISearchResultsUpdating 和 UISearchBarDelegate 这俩个代理了,通过 UISearchBar 获取到输入值,然后提供数据源查找,并 reload...UI 视图, 由于我们首页里 Cell 样式有不同之处但也有相似的地方,所以我们创建了一个基类 BaseViewCell, 用于展示 Cell 相同地方;然后我们各个 Cell 构建不同样式

    2.3K10

    The Clean Architecture in PHP 读书笔记(七)

    本文为系列文章第七篇,完成目录请查看Clean Architecture The Clean Architecture Clean Architecture是Uncle Bob Martin2012...但是社区活跃带来问题是,库出现快,消失也快。因此我们开发,必须要考虑尽量减少对外部库依赖,一个方法就是之前介绍适配器模式。...Onion Architecture,应用核心是领域模型,完全和数据库解耦,整个应用,数据库只是应用需要一个组件,我们可以完全替换存储,而不影响整个应用逻辑。...本节只是对clean architecture做了一个概述,下面会对clean architecture5个特点展开具体讨论。...参考文献 Clean Architecture(英) Clean Architecture(译) Onion Architecture

    41230
    领券