RxSwift 系列文章(一)

最近正在学习 RxSwift,希望能实践到项目中并更换几个模块,本系列文章会持续更新。这次的文章介绍了 TableView 在 RxSwift 下的使用

基础

RxSwift 是一个响应式框架,类似于 KVO 和 Swift 中的 didSet 的概念。接下来先介绍三个重要的类。

Observables 和 Observers

  • Observables 能够发出值改变的通知,就类似于一个属性值改变了,didSet 就被触发
  • Observers 能够订阅 Observers,他能够收到 Observers 发出的通知,就类似于 NotificationCenter.addObserver

DisposeBag

只要有函数返回 DisposeBag 就必须加上 addDisposableTo(disposeBag)。这句话就是说在 deinit 的时候会自动销毁 Observers,不这样做也许会导致程序崩溃或是别的问题。

接下来进入正题

首先在 storyBoad 中创建好一个控制器,并且给 cell 添加好 Identifier
![屏幕快照 2016-10-20 下午10.28.26-w442](https://o909w11l5.qnssl.com/屏幕快照 2016-10-20 下午10.28.26.png)

然后让我们创建一个数组,这个数组是一个静态数组,Observable 可以当值改变时发出通知,但是 just 代表只发送一次值,接下来值改变不会发送。

var dataArray = Observable.just([1, 2, 3, 4, 5, 6, 7, 8, 9])

接下来让我们创建一个 tableView,平常写法我们都要写上一堆的数据源方法,使用 RxSwift 会相当省事,几句代码就创建好了 tableview,并且不用担心会出任何问题。

![屏幕快照 2016-10-20 下午10.32.17](https://o909w11l5.qnssl.com/屏幕快照 2016-10-20 下午10.32.17.png)

这样一个 tableview 就创建好了,当你启动程序就可以看到 cell 显示在你的模拟器上。接下来让我解释一下这五个步骤的意思。

  • 第一步先把数据源写好
  • 第二步 bindTo 的意思是将数组与 tableview 绑定,dataArry 发出的通知会告知到tableView,并且这个函数是一个柯里话
  • 第三步 rx 是为了调用接下来 Rxcocoa 的代码
  • 第四步是绑定 cell,直接让 cell 支持重用,然后在闭包中对 cell 进行操作
  • 第五步是确保控制器销毁的时候这个监听者也同时销毁

这五步完成后,你就完成了一个 tableView,让我们运行一下。
![屏幕快照 2016-10-21 上午11.00.44-w374](https://o909w11l5.qnssl.com/屏幕快照 2016-10-21 上午11.00.44.png)

接下来我们来完成点击 cell 以后一系列的逻辑。

首先我们创建一个空数组 var storedArray = Variable<[Int]>([])

然后处理 cell 的点击逻辑
![屏幕快照 2016-10-21 上午11.07.42](https://o909w11l5.qnssl.com/屏幕快照 2016-10-21 上午11.07.42.png)

  • 第一步是处理 model 的点击,将 model 自身传进去
  • 第二步是当值改变时,闭包会被触发
  • 第三步是在闭包中我们将被点击行的模型数据 append 到 storedArray 中,并且输出相应被点击的 indexPath

当 storedArray 值改变时,我们也可以相应观察到
![屏幕快照 2016-10-21 上午11.13.15](https://o909w11l5.qnssl.com/屏幕快照 2016-10-21 上午11.13.15.png)

  • 第一步是将 storedArray 变成 Observable,让这个值在改变时能发出通知

以上这几句我们就完成了创建 cell,设置数据源并且处理了点击 cell 的逻辑,但是这几步只适合于创建一个静态的 tableview。接下来让我们模拟一下上拉刷新来 reload tableView。

创建一个 Variable 数组 var a = Variable<[Int]>([1, 2, 3, 4, 5, 6, 7, 8, 9])

创建一个按钮,当点击后在数组末尾添加一个元素 a.value.append(1)

接下来重新设置 tableView
![屏幕快照 2016-10-21 上午11.18.43](https://o909w11l5.qnssl.com/屏幕快照 2016-10-21 上午11.18.43.png)

设置完以后运行一下软件,当点击按钮时你会发现 tableView 会自动刷新
![屏幕快照 2016-10-21 上午11.20.17-w369](https://o909w11l5.qnssl.com/屏幕快照 2016-10-21 上午11.20.17.png)

以上操作我们就完成了一个简单的 tableView 逻辑,接下来的文章我会逐步将常用的控件和逻辑用RxSwift来完成。

有任何问题欢迎大家一起讨论。

项目地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • 本文章内部分图片资源来自RayWenderlich.com 本文结合自己的理解来总结介绍一下RxSwift最基本的...
    FKSky阅读 2,853评论 4 14
  • 概述在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似...
    liudhkk阅读 8,978评论 3 38
  • 2017.02.22 可以练习,每当这个时候,脑袋就犯困,我这脑袋真是神奇呀,一说让你做事情,你就犯困,你可不要太...
    Carden阅读 1,321评论 0 1
  • 我们在上一篇《通过代码自定义不等高cell》中学习了tableView的相关知识,本文将在上文的基础上,利用sto...
    啊世ka阅读 1,495评论 2 7
  • 4 目录 “快活木薯”是大黑山区小有名气的一家啤酒拉面店,一到中午人气就显得特别兴旺。赫斯提娅转头对罗宁说“还好我...
    图林根人阅读 373评论 0 0