GMTC2018-《开源+Flix+ +谈异构列表解决方案》 宋旭陶
2020-02-27 170浏览
- 1.开源 Flix 谈异构列列表解决⽅方案 宋旭陶 美甲帮 iOS ⼯工程师
- 2.
- 3.
- 4.⾃自我介绍 • 宋旭陶/靛⻘青K • 对 RxSwift 有⼀一定研究 • 最近经常并发写 Swift、Vue、⼩小程序
- 5.• 列列表构建痛点和 Flix 解决⽬目标 • 异构列列表 • Flix 解决⽬目标 • Flix 设计理理念 • 适⽤用场景和总结
- 6.使⽤用 UITableView 怎么麻烦了了
- 7.账户注册⻚页⾯面(if indexPath.row)
- 8.账户注册⻚页⾯面(if indexPath.row) 输⼊入了了可⽤用的⽤用户昵称 两次密码输⼊入相同
- 9.试试 switch case ?
- 10.if indexPath.row vs switch case • indexPath.row hard code,⽐比较危险 • indexPath.row 和 switch case 不不相关逻辑耦合紧密 • 代码难以复⽤用
- 11.Flix 解决什什么问题 • 没有 hard code - 不不再需要关⼼心 IndexPath • 逻辑解耦 - 每个 Provider 各司其职 • Cell 组件复⽤用 - 复⽤用 Provider 到各个⻚页⾯面 • 快速构建你的 UITableView / UICollectionView
- 12.使⽤用 Flix 的账户注册
- 13.使⽤用 Flix 的账户注册
- 14.• 列列表构建痛点和 Flix 解决⽬目标 • Flix 设计理理念 • ⾮非复⽤用 Cell 构建 • 复⽤用 Cell 构建 • Provider 构成 • 整合 Provider • 适⽤用场景和总结
- 15.设计理理念
- 16.Provider 作⽤用 • Provider 处理理⾃自⼰己的 Model,根据 Model 返回响应的 Cell • 管理理对应的 Cell ⾼高度、点击事件等 • 按序合并每个 Provider,构成最终的列列表
- 17.⾮非复⽤用 Cell 构建
- 18.⾮非复⽤用 Cell 构建 • ⼀一个 Provider 只⽣生成⼀一个对应的 Cell • 任何位置都可以访问这个 Cell • 不不受重⽤用影响
- 19.⾮非复⽤用 Cell 构建
- 20.复⽤用 Cell 构建
- 21.复⽤用 Cell 构建 • ⼀一个 Provider 通过⾃自⼰己的 Model 管理理多个 Cell • ReuseIdentifier 不不和其他 Provider 重复
- 22.复⽤用 Cell 构建
- 23.Provider 构成
- 24.细化 Provider 种类 protocol associatedtype MultiNodeProvider Value NodeProvider Cell SingleNodeProvider UITableViewCell
- 25.增加 Protocol 获得动画效果 protocol MultiNodeProvider protocol protocol AnimatableMultiNodeProvider NodeProvider & = AnimatableProvider AnimatableNodeProvider SingleNodeProvider AnimatableSingleNodeProvider
- 26.增加编辑功能 protocol protocol Provider Editable + Insertable Moveable Swipeable Deleteable
- 27.Group Provider GroupProvider (abstract) MultiNodeProvider NodeProvider SingleNodeProvider
- 28.Group Provider GroupProvider (abstract) MultiNodeProvider NodeProvider SingleNodeProvider
- 29.Group Provider VerifiableInputProvider InputProvider VerifiableProvider • 只整合 Provider • 不不管理理 Model 和 Cell
- 30.不不增加代码量量替换 RxExample UI
- 31.通过类型擦除整合 Provider
- 32.将 Provider 塞⼊入数组
- 33.将 Provider 塞⼊入数组
- 34.将 Provider 塞⼊入数组 编译通过
- 35.继承 _Provider 的 Provider • [_Provider] 拥有了了 [Provider] 功能 • 但对外暴暴露露了了 _Provider
- 36.通过私有⽅方法隐藏 试试 class
- 37.• 列列表构建痛点和 Flix 解决⽬目标 • Flix 设计理理念 • 适⽤用场景和总结
- 38.
- 39.Flix 对⽐比 XLForm • 强类型 • ⽆无需继承 XLFormViewController • Cell 可复⽤用 • 可⽤用于 UICollectionView • ⽀支持表单验证 • 可⽤用于 Objective-C • ⽆无其他额外依赖
- 40.Flix 对⽐比 Eureka • 没有那些⽤用不不上的组件 • ⽆无需继承 FormViewController • ⽀支持从 Storyboard 构建 • Cell 可复⽤用 • 可⽤用于 UICollectionView • 易易定制 • XLForm ⾼高清重制版 • ⽆无其他额外依赖
- 41.One more thing… 最近刚好有朋友问了了我这样⼀一个问题: 将⼀一组数据展示到 UITableView 中,过⼀一段时间更更新第⼀一个 Cell 的内容。
- 42.One more thing… SingleRefreshProvider ListProvider
- 43.参考内容 •https://github.com/DianQK/Flix•https://github.com/DianQK/ToDoMVCS•https://github.com/DianQK/RefreshSingleCell/tree/flix •https://talk.objc.io/collections/building-a-form-library•https://github.com/ReactiveX/RxSwift/blob/master/RxExample/RxExample/Examples/GitHubSignup/UsingVanillaObservables/ GitHubSignupViewController1.swift
- 44.Q&A
- 45.
- 46.
- 47.
- 48.