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.