RxSwift使用备忘 RxSwift 常用方法使用,这里记录一下。...throttle 和 debounce 的区别: throttle 每隔固定时间调用 debounce 事件停止后隔多少秒调用 所以,如果需要实现输入中搜索,使用 throttle fileprivate...实现点击 button.rx.tap .subscribe(onNext: { print("button Tapped") }) .disposed(by:...整合网络请求 flatMapLatest,处理多个任务有依赖关系的情况,避免回调地狱 /// 通过用户名和密码获取用户信息 API.token(username: "beeth0ven", password...: disposeBag) zip,同时发送多个请求,多个请求都完成后,再往下处理,就可以通过zip来实现 combineLatest,同时发生多个请求,每个请求完成后,都会触发处理事件的方法
前言 之前的几篇博客算是入门篇,那么这篇就是RxSwift的实战篇。由于对RxSwift的认识还不够深刻,所以项目中没有使用MVVM模型,以及编程思想也还没转变过来。...然后tabbarVC添加两个控制器,一个为首页,一个为其他话题,然后隐藏tabbar,通过侧栏点击切换。如下图所示: ? 整体框架 首页搭建 1、导航栏的设置 先来看看效果图: ?...使用Moya,可以优雅的封装Alamofire,而Moya/Rxswift可以将返回的结果转为Observable属性,进行监听。...那么针对上拉刷新,我是这样封装的,在我的MPApiService服务层中,定义了如下方法: func loadMoreHomeNewsList(date: String) -> ObservableRxSwift,不打算封装太多层,怕把自己绕进去了,所以就先这样写了~ 4、设置导航栏的titile日期 效果说明:随着列表的滚动,sectionHeader的日期会显示在导航栏上
这次打算单独将 tableView 在 RxSwift 框架中的使用整理成一篇文章。...tableView 在日常开发中是接触到最多的UI控件之一,在 RxSwift 框架中也帮我们封装好了关于 tableview 的使用方法。...TableView 基本应用 首先,为了更好地展示 RxSwift 在 TableView 方面的优势,创建一套本地数据用于 TableView 数据源。...RxSwift框架同样帮我完成了对 TableView 一系列事件的响应封装,比如:点击事件、删除cell事件、移动cell事件等。...(onNext: { indexPath in print("itemSelected触发了cell点击,\(indexPath)") })
平常我在业务开发中,绝大部分情况都是使用的UITableView,而UICollectionView则是在极少情况下才会去使用,这就导致了我对UICollectionView略感陌生。...UICollectionView的collectionCell支持横向&纵向布局,比UITableView的tableCell只有纵向布局要更加灵活。...UITableView中的row,对应到UICollectionView中就是item,因为一行可以展示多个cell,使用row(行)不能准确地表达。...而UICollectionViewCell的获取,必须是先注册,然后通过dequeue方法获取。 系统默认给我们提供了一种layout——UICollectionViewFlowLayout。...通过UICollectionViewFlowLayout中的itemSize属性是将所有的Item都设置成一个统一的样式,如果我们需要对特定的item进行自定义样式,那么就需要实现UICollectionViewDelegateFlowLayout
假设我们有一个 Table View Controller 来记录 To Do 列表,我们可以通过点击导航栏的加号按钮来追加一个条目,用 Swipe cell 的方式删除条目。...###2.违反数据流动规则和单一职责规则 如果我们仔细思考,会发现,用户点击添加按钮,或者侧滑删除 cell 时,在 View Controller 中其实发生了这些事情: 1.维护 Model (也就是...另外,PM 和用户也许希望在详情页面中也能直接删除这个正在编辑的待办。...不论是从网络获取,还是保存在本地的数据库,这些操作都不必 (也不应写在 View Controller 中)。...有一些其他架构选择,最常用的比如 MVVM 和响应式编程 (比如 RxSwift)。MVVM 可以说几乎就是一个 MVC,不过通过 View Model 层来将数据和视图进行绑定。
然后就是一道相对丰盛的大菜,使用Operation在CollectionView上实现子线程加载图片的案例。这个例子其实在生产中经常可以碰见。先把界面加载出来,然后再慢慢往item里面加载图片。...尽管我们可以在start方法中执行任务,但是使用main来设置执行任务的代码,可以让operation的结构更加清晰。 isExecuting: 必须的。是否执行中。,需要实现KVO通知机制。...元组可以与Switch大牌进行复杂条件的判断;可以作为方法的返回值,来返回多个数值;可以假装成结构体使用; 3. CollectionView中图片进行异步加载 来看一下思维导图: ?...CollectionCell let (item, operation) = imageOps[indexPath.row] // 只是以防万一,我们先停止一下操作...有钱的大爷就点击下方打赏点卖笑钱,有力气的就在github上给个星星✨。或者在评论里面咱们聊聊天,吹吹牛也行。hiahia~ 噢,预告一下。按照之前的计划,下一篇应该是GCD基础。OMG,好枯燥。
我们都应该知道UICollectionView我们要想自定义一些东西或者布局几乎都是通过Layout下手的,那我们要给它设置组背景色和组圆角是不是也在这里进行呢?...我们大致的思路是这样的: 给UICollectionView 每一组添加一个修饰View,然后在这个修饰View上我们设置组圆角和背景色,最后我们把CollectionCell 设置成 Clean背景就可以达到我们想要的效果...重点 ---- 在我们写瀑布流或者别的一些布局的时候,我们都是在哪里重写的?...} 不能忘记了PPReusableView,它的代码也比较的简单,如下 import Foundation import UIKit // MARK: - 可重复使用视图 class PPReusableView..., at indexPath: IndexPath) -> UICollectionViewLayoutAttributes?
平常我们使用 RxSwift 的时候,一般不会去直接使用 delegate,譬如要处理 tableView 的点击事件,我们会这样:tableView.rx.itemSelected.subscribe...那这个过程到底是如何进行的呢?...这里使用的几个方法并没有在协议扩展里实现,而是分别在DelegateProxy和RxScrollViewDelegateProxy中实现的,先看DelegateProxy中: public class...注释已经写清楚了,这个方法第一次会把 selector 和一个新建的 subject 绑定,缓存到字典中,之后就通过 selector 来取对应的 subject。...小结 我在文中讲述了自己阅读源码的心路历程,如何按图索骥,一步步理清整个过程,兴许对那些想要阅读源码却不知如何入手的朋友会有帮助。 水平有限,如有错漏,欢迎指出~
下面将要介绍的才是这篇博客中的重点:我们如何使用CoreData才会让TableView爱上它呢?...; self.managedObjectContext = [delegate managedObjectContext]; c.编辑点击button要回调的方法,在点击添加按钮时首先得通过上下文获取我们的实体对象...中通过上下文来查询数据,并存储在fetchedResultsController中, 在获取数据的过程中我们需要定义UIFetchRequest 和排序规则,代码如下: 1 2 3 4 5 6 7 8...return YES; } b.开启编辑功能以后我们就可以在tableView的对应的方法中来实现删除功能啦,当点击删除时,我们需呀获取cell对应的索引在CoreData中的实体对象,然后通过上下文进行删除...]; 11 12 } 5.在我们的查询后的列表中,如果还想点击cell以后跳转到编辑页面,我们该如何做呢?
前言 当你在工作中需要开发一个新的应用程序时,首先你会去考虑使用哪种设计模式,是 MVC 呢还是 MVVM?...当然这话放在今儿个说,大家肯定会一致的选择 MVVM,因为相比 MVC 模式,MVVM 模式有太多的优势,譬如说移除了在 View Controller 中的业务逻辑,将这部分代码放在 View Model...现在关于数据绑定的成熟解决方案有很多,譬如说 RXSwift,KVO 等等,在这里我就不再多介绍这些方式了,感兴趣的同学可以自行 Google 一下。...今天我要给大家介绍的是另一种方式,那就是使用闭包来实现数据绑定。 闭包为何物 闭包是自包含的函数代码块,可以在代码中被传递和使用。闭包可以捕获和存储其所在上下文中任意的常量或变量的引用。...简单的描述一下需求:我们需要将在 ViewModel 中通过网络异步获取到图片数据并返回给主视图里的 TableView, 并将数据加载出来。
- 主要功能:增、删、改、查 - 界面用默认的界面,将detail页面改为`UITextView`可编辑 - 主页面进行 增、删、查操作 - 子页面进行 删、改、查操作 需求很简单,官方模板还添加了按时间排序的操作...NSError fatalError("Unresolved error \(nserror), \(nserror.userInfo)") } } 在navBarRight...description } 点击cell的页面 由于默认的M-D页面模式 点击cell是直接指向D页面,我们把他删掉,写到tableview的didSelectRowAt方法中,使用navigationController...并传递当前查询出来的数据对象 我这里是使用stroyboard ID来获取视窗 override func tableView(_ tableView: UITableView, didSelectRowAt...indexPath: IndexPath) { //点击cell push let object = self.fetchedResultsController.object
实现方法是在TableView加载后增加整体的动效,通过循环和延迟,让每个Cell从不同的时间开始经历相同的时间动效结束。...cell点击.gif - (void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath *)indexPath...cell中的UIImageView全屏展示并关闭 ?...点击.gif actionTap 是cell中的图片上加的手势事件。...也算给我们提供一种根据手势点击获取cell的思路。
Get和Post两者有和特点和区别,在本篇博客中不做过多的论述,本篇的重点在于如何GET数据和POST数据。...(3)上面的数据是通过API获取的,获取完后再显示在我们的tableView中,将会提供一些关键的实现代码,准备工作是新建三个TabelViewController然后配置相应的cell。...2.我们如何通过调用可以发图片的API上传本地图片呢?为了简化我们APP的图片的上传,我们就得用到AFNetWorking中的东西了,如何配置和使用CocoaPods请参考上面的链接。 ...(1)为了区分按钮,我们需要给每个按钮设置tag,然后在TableViewController中获取Tag的值,我们就知道是那个按钮被点击了。 ...a.在我们Cell的类中需要定义一个block块的类型变量,用于在TableViewController中回调使用,在block回调时,我们就可以把那个Cell以及Cell中被点击的按钮传到TableViewController
2018-03-27 09_32_14 切换的如此丝滑 看来也不是添加在 UITableViewCell上面的影响。 ...解决办法 这个问题出现的原因是我的界面使用我封装的表格管理器 https://github.com/josercc/ZHTableViewGroup 导致的。...因为在点击 cell 时候我要返回点击 cell 的对应的对象和索引 我就走我当时创建 Cell 的方法用 UITableView 的dequeueReusableCellWithIdentifier方法获取...我暂时的认为点击 cell 只能点击出现的 cell,我就从visibleCells这个数组获取,找到点击的 cell 之后直接返回。 就不会存在对象地址变更导致这个问题出现了。...__block UITableViewCell *cell = ({ cell = nil; /* 因为点击的 CELL 一定是在屏幕可见的范围之内 所以直接取 */ [dataSource.tableView.visibleCells
本书的目标就是带你逐步的去理解 RxSwift 的 API,并且去运用每一个 API,然后把它们运用到实际的 iOSApp 中。...你将会从 RxSwift 中最基本的功能开始,然后循序渐进的由中级到高级。花一些时间去广泛的理解里面的概念,这样以来读完本书后你就会精通 RxSwift 额思想和使用。...我们思考一个问题:比如你在看视频,这时候你点击了 textfield 弹出键盘,大家都知道键盘由下往上弹出是有一个动画的,就算键盘已经出现到了屏幕上,只要动画没有做完你的视频就不会暂停,真的是这样吗,内部又是如何实现的...# UIKit 中的一些异步的 API 苹果在 iOS SDK 中提供了很多 api,帮助你编写异步代码。你在你的项目中使用过这些但是可能还没有考虑过它们,因为它们是编写移动应用程序的基础。...# 异步代码 再考虑一个类似的代码,如下用户通过点击事件触发下面代码,每次点击都会输出数组下一个元素,然后用户重复点击直到把数组所有的元素输出完成: var array = [1, 2, 3] var
= 在今天的博客中你可能会看到: VVeboTableView中Cell加载逻辑的解析 TableView代码解耦的基本思路 恩,东西不多,一点一点说~ ---- VVeboTableView 其实这是...那么为什么VVebo使用率那么高呢?一方面是当时新浪微博客户端的确不行,另一方面VVebo简约的风格和流畅的体验俘获了一大批用户。所以今天我们就来探究一下他是如何做到TableView的丝滑体验的。...在老司机看来,作者最有效的优化分为4部分: TableViewCell圆角优化 缓存行高 相对固定的图片及文字采用CoreText绘制 TableView加载数据逻辑优化 ---- 1.圆角 这部分作者的优化很简单...如何获取到TableView快速回到顶部的时间点?...但是代码怎么可能不写,只是我在别的地方写过了,并且花了大把时间进行解耦,让每一个TableView都能拿来就直接使用。 那么这个解耦的类我们要怎么写呢? 好的,我们来新建一个文件。
本文将深入浅出地介绍Combine的基本概念和原理,然后通过具体demo详细阐述其在实际编码中的应用。...我们通过URLSession内置的dataPublisher发送网络请求解析来说明用法,目的是为了说明Combine中的异步API以及在异步API中如何使用Operator。代码示例如下图: ?...4,这时候订阅者Subscriber和发布者Publisher已经通过subscription绑定了,订阅者Subscriber就可以通过request(_ demand:)方法获取它想要多少个Value...我们保存subcriber,是因为在接下来的点击事件中,要让subcriber接收Value。...四、性能表现 RxSwift已在开源社区广泛应用,Apple本身推出的Combine的性能表现如何呢?我们使用Will Combine kill RxSwift?
在聊天页面中主要用到了TableView的知识,还有如何在俩天中显示我们发送的表情,具体请参考之前的博客:IOS开发之显示微博表情,在这儿就不做赘述啦。...当点击图片时会跳转到另一个Controller中来进行图片显示,在图片显示页面中添加了一个捏合的手势(关于手势,请参考:iOS开发之手势识别)。...点击播放按钮,会播放录制的音频,cell的大学会根据内容的多少来调整,而cell中textView的高度是通过约束来设置的。 ? ...block回调把图片传到Controller中,用于放大图片使用。...,在图片显示View中通过捏合手势来调整图片的大小,代码如下: 1 - (IBAction)tapPichGesture:(id)sender { 2 UIPinchGestureRecognizer
前言:先看下效果 Tips: 这是用Swfit写的一个小Demo,用UICollectionView实现的拖拽排序,点击排序的效果。...在ViewController里自定义了两个数组,我的频道(myChannels)和更多频道(moreChannels) 在点击+跳转到频道管理页面的点击方法里面有一个回调方法,即:将选中的频道、以及自定义后的频道回传到此页面...destinationIndexPath: IndexPath) { /* 1.以下方法是处理移动后的数组中的元素'删除'或'新增'问题....2.不这样处理,就会崩溃.自己算法水平有限,也是真的没想到什么比较好的办法. 3.可能有人比较较真,提到如果真的像搜狐那么多'section'如何处理.个人感觉,目前市面上比较火的几家新闻...看来有个好的产品经理还是很重要的。 以上是我个人的一些总结,我相信一定还有我自己没有注意到的地方存在问题。欢迎各位给我提宝贵意见。我会积极改正的!!!
- (void)reloadSections:(NSIndexSet *)sections 这次我直接使用grouped的cell来做父cell,点击后展开相应的子cell,还有动画特效。...封装测试数据 使用FMDB(或者CoreData)从objc中国获取主issue作为父级cell,文章作为subCell,具体获取使用python和BeautifulSoup,不在本次的讨论范围之内,需要的可以查看相应的资料或者留言我...,也可以在文末的项目源码里获取python代码。...但是当点击的是展开的cell下方的cell时,indexPath就会出现问题。像下面这样。 ? 我要点击的是2x,但是实际上点击的却是4x,问题出在哪里?...只要willSelect的时候return一个新的indexPath即可,这个indexPath通过计算得出。下面是我的willSelect里的实现代码。
领取专属 10元无门槛券
手把手带您无忧上云