TableView是iOS开发中经常用到的View,针对不同的显示需求,我们需要不同的Cell来进行显示,比较复杂的显示我们一般会自定义Cell的样式,但是简单的显示就可以靠iOS本身支持的列表类型了。...iOS目前支持四中列表类型,分别是: UITableViewCellStyleDefault:默认类型,可以显示图片和文本 UITableViewCellStyleSubtitle:可以显示图片、文本和子文本...要设置也很简单,代码如下: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath...,支持显示图片和文本 { NSString *CellOne = @"CellOne"; // 设置tableview类型...UITableViewCellStyleValue2类型,支持显示文本以及子文本 { NSString *CellFour = @"CellFour"; // 设置tableview
RxSwift中有四种类型的Subject: PublishSubject: 只会发送新的事件给订阅者,订阅之前的事件不会发送。...当有新的订阅者是,它会把缓存的事件发送给新的订阅者。 Variable:相当于一个BehaviorSubject的封装,它会保存当前值做为自身的一个状态,发送当前的状态给新的订阅者。...PublishSubject 的next事件只会发送给当前已经订阅这个subject的订阅者,新的订阅者不会收到订阅之前发送的事件。...当有新的订阅者是,它会把缓存的事件发送给新的订阅者。 ?...Swift,RxSwift,欢迎交流!
本文是基于 iOS - RxSwift 项目实战记录 所述,如果你还未阅读过,建议你最好还先阅读一遍,并下载Demo熟悉一下 : ) LXFBiliBili 前言 MVVM的模式中,多出了ViewModel...在使用RxSwift开发时会大量的使用到这种形式,其中就包括我们的网络请求。...结合 iOS - RxSwift 项目实战记录 中所述的“MJRefresh在RxSwift中的使用”,在output中定义了一个变量 let refreshStatus = Variable<LXFRefreshStatus...面向协议 关于协议的内容可以看下我之前的这两篇文章 iOS - Swift 面向协议编程(一) iOS - Swift 面向协议编程(二) 总结协议的两大作用:1、规范 2、定制能力 定义协议 Refreshable...*/ // viewModel 中 output使用 protocol OutputRefreshProtocol { // 告诉外界的tableView当前的刷新状态 var refreshStatus
大家好,又见面了,我是你们的朋友全栈君。...项目中使用了UITableViewController,里面有用到UITextView需要点击键盘外的地方来隐藏我的键盘 自定义一个uitableview,继承UITableView。
的使用 Moya是基于Alamofire的网络请求库,这里我使用了Moya/Swift,它在Moya的基础上添加了对RxSwift的接口支持。...RxDataSources 如果你想用传统的方式也行,不过这就失去了使用RxSwift的意义。...好吧,我们接下来说说如何优雅的来实现tableView的数据源。其实RxDataSources官网上已经有很明确的使用说明,不过我还是总结一下整个过程吧。...有的话那从今天开始就要认清楚这一点,【tableView其实是由section组成的】,所以在使用RxDataSources的过程中,即使你的setion只有一个,那你也得返回一个section的数组出去...,不然会不方便阅读和理解 } } 接着我们在ViewController中初始化我们的input,通过transform得到output,然后将我们output中的sections序列绑定tableView
这次打算单独将 tableView 在 RxSwift 框架中的使用整理成一篇文章。...tableView 在日常开发中是接触到最多的UI控件之一,在 RxSwift 框架中也帮我们封装好了关于 tableview 的使用方法。...自从接触了 RxSwift 的框架,关于 tableview 基本就不用再繁琐地去实现系统提供的各种代理方法,几行代码搞定关于 tableview 的一切。...RxSwift框架同样帮我完成了对 TableView 一系列事件的响应封装,比如:点击事件、删除cell事件、移动cell事件等。...中的 cell 还是继续使用之前准备好的自定义 cell。
如果许多单元格中都包含这样的“换行符”,现在要将其全部删除掉,让这些单元格中的内容都变成一行显示,该如何操作呢?...方法一:取消自动换行 在Excel单元格中按快捷键Alt+Enter进行换行时,该单元格就被设置成了“自动换行”,如果要将这些单元格中的“自动换行”效果取消,也就是删除“换行符”,方法如下:...1.Excel 2003操作方法:选择这些需要调整的单元格,鼠标右击,在弹出的快捷菜单中选择“设置单元格格式”,在“对齐”选项卡中可以看到“自动换行”选项已被选中,取消该选项,单击“确定”即可。...但这种方法有个缺点,当选择这些单元格时,编辑栏中的内容仍是换行的,而且双击该单元格又会自动变成“自动换行”了。...方法三:用CLEAN函数 CLEAN函数可以删除文本中不能打印的字符。假如A1单元格包含换行符,可在B1单元格中输入公式:“=CLEAN(A1)”,即可删除换行符。
这里往往需要遵循TableView相关的各种代理方法,下面是使用结构体生成一串简单的数组并放入tableView中显示内容。...tableView在swift环境下的实现 遵循的tableView代理方法还是一如既往的繁多 接下来,在使用RxSwift框架下改造上面的tableView,来感受下RxSwift的强大。...在RxSwift中,不再需要去挨个遵循tableView的各种代理方法,直接上修改后的代码 class ViewController: UIViewController { lazy...在RAC中使用的组合式销毁来集中管理销毁RACSignal,而在RxSwift中与RAC类似的使用到了DisposeBag来实现Observable的集中销毁管理。...上手写代码的过程中,发现RxSwift的编译器代码提示在Xcode下实在是不友好,代码提示有时完全失效,只能手动写入其实现的方法与参数 现在了解了RxSwift框架的基本使用,在RxSwift的官方链接中也有
今天就介绍一下前段时间写的一个 demo,主要功能是扫描附近的蓝牙设备,显示相关信息,点击后可以连接设备,并获取更多信息。对 RxSwift 及 BLE 感兴趣的同学可以看看,或有所得。...做过蓝牙相关开发的 iOS 同学们肯定都用过 CoreBluetooth 这个系统框架,使用它的话,几乎所有操作都是通过 delegate 完成的。...我曾一度想着用 RxSwift 去包装一下 CoreBluetooth,后来发现已经有人做了这件事了,于是就想先写个 demo 看看靠不靠谱。Demo 在这里。...扫描设备的整个流程大致是这样的: 筛选蓝牙状态,将除.PoweredOn之外的状态过滤掉 扫描设备 筛选设备,将已出现过的设备过滤掉 将扫描到的新设备添加到设备列表中 用设备列表构建一个dataSource...,并与tableView绑定 将资源添加到disposeBag中,以待统一回收处理 这个过程用 Rx 的风格来写大概是这样的: func bindDataSource() { manager.rx_state
RxSwift使用备忘 RxSwift 常用方法使用,这里记录一下。...RxSwfit实现搜索 distinctUntilChanged的作用是,相邻的重复事件不产生新的事件,所以搜索中使用distinctUntilChanged可以保证只有每次触发的搜索都是不同的字符串,...throttle 和 debounce 的区别: throttle 每隔固定时间调用 debounce 事件停止后隔多少秒调用 所以,如果需要实现输入中搜索,使用 throttle fileprivate...subscribe { [unowned self] (query) in }.disposed(by: disposeBag) } 而如果实现输入停止后搜索,使用...tableView.mj_footer?.
不同于使用可变的变量替换和就地修改,RAC提供信号来捕获当前值和将来值(使用介绍 ),不错的例子,入门好教程:ReactiveCocoa入门教程:第一部分。...无功可可3.0在MVVM中的应用 ,小码哥:快速让你上手ReactiveCocoa之基础篇。...LoginWithReactiveCocoa - ReactiveCocoa - 登录交互效果的实现。 RxSwift - RxSwift:函数响应式编程框架。...RxPermission.swift - 通过绑定RxSwift实现的RxPermission。 Permission.swift - 统一的API请求iOS本地设备和资源权限类库。...MVVMFramework - (OC版)总结整理下一个快速开发框架,分离控制器中创建tableView和collectionView的代码,已加入cell自适应高度,降低代码耦合,提高开发效率。
的运用也仅限于网络请求库,RxCocoa的一些优点没有运用到项目 所以是时候在项目中使用真正的MVVM了(整理出套路代码),介于项目中已经引入了RxSwift,所以就用它来实现了,在学习本文前可能会要求读者对...RxSwift有一定的了解和使用。...,删除按钮点击,新建分组按钮点击 输出:TableView数据源,页面Loading状态 ViewModel核心代码: 这里可能会有人疑问为什么会保存页面的数据呢,我们的数据不是直接通过网络请求生成一个序列绑定到...loading:控制页面loading状态的序列 Activitylndicator核心代码 ViewController中的核心代码 在这里RxDataSources的使用方法我就不再详细叙述了,...Navigator中的核心代码 总结 要搭建一个上述的MVVM项目,RxSwift,RxDataSources,Moya是必不可少的,并且你要会用RxDataSource创建UITableView数据源
前言 之前的几篇博客算是入门篇,那么这篇就是RxSwift的实战篇。由于对RxSwift的认识还不够深刻,所以项目中没有使用MVVM模型,以及编程思想也还没转变过来。...最后,还是非常感谢该作者源码的贡献~ 框架介绍 框架 说明 Moya 对Alamofire的封装 Moya/RxSwift 针对RxSwift的Moya扩展 Kingfisher 喵神的网络图片加载库...首先头部的轮播图是使用UICollectView和pageControl实现的,只要对数组的首尾做处理,即可实现无线轮播的效果。...的willDisplay方法中,监听section的变化,刷新条件是:当滚动到最后一个section的第一个元素时,加载更多数据 func tableView(_ tableView: UITableView...使用Moya,可以优雅的封装Alamofire,而Moya/Rxswift可以将返回的结果转为Observable属性,进行监听。
一.SQLite的使用 采用SQLite数据库来存储数据。SQLite作为一中小型数据库,应用ios中,跟前三种保存方式相比,相对比较复杂一些。还是一步步来吧!....dylib与前者的区别暂时不知,两者应该差不多);在项目文件中头文件或者源文件中添加头文件#import "/usr/include/sqlite3.h" 第二步:开始使用SQLite: 1.打开数据库...使用前注意:如果不往数据库里面添加任何的表,这个数据库等于没有建立,不会在硬盘上产生任何文件,如果数据库已经存在,则会打开这个数据库。...这是因为数据库默认使用ascII编码方式。所以要想正确从数据库中取出中文,需要用NSString来接收从数据库取出的字符串。...// [self.db executeUpdate:NSString *]; 删除表中数据 [self.db executeUpdate:@"DELETE FROM t_shop WHERE
同为 FRP 框架的 RAC 中素有冷信号和热信号的概念,而且是两种不同的类型。...其实 RxSwift 中的 Observable 也有冷热之分,但为什么提的人不多呢,官方文档是这么说的: IMHO, I would suggest to more think of this as...很明显,Variable 是个 HO,它其实是 BehaviorSubject 的一个封装,顺便说一下,RxSwift 中的所有 Subject 都是 HO。...如何一眼区别 CO 和 HO 前面也说过了,不管是冷是热,它们都是 Observable,虽然我顺便提了几个 RxSwift 中典型的 CO 和 HO,但如果是一个自定义的 Observable 呢,要如何区分它是冷是热呢...之前我在 走进 RxSwift 之观察者模式中解释了Observable.empty的实现,虽然那是比较老的版本,不过核心原理是一样的。
HorizontalScrollCell - HorizontalScrollCell是一款使用方便的水平方向可滚动的单元格,适用于UICollectionView中实现水片方向滚动视图。 。...MGSwipeTableCell - 另一个常见于很多应用中的UI组件,苹果应该考虑在标准的iOS SDK中加入一些类似的内容。Swipeable表格cell是这个pod的最佳描述,也是最好的。...LLRiseTabBar-iOS - 直接使用系统的特性实现的tabbar,比较简单。...MTMaterialDelete - 非常有趣的Material Design动画,动画删除表里面的单元格。...实现教程 jingDongFenLei - 简单仿写京东分类中的多级分类页面。
RxSwift 这个框架看我就够了,这一篇我重点介绍高阶函数,掌握好RxSwift的高阶函数,是你通往成功的捷径。...搞RxSwift,我是认真的 RxSwift 宝图镇博,咔咔点赞~~~~ Rxswift RxSwift 深入浅出(一)RxSwift初探 RxSwift 深入浅出(二)高阶函数 RxSwift 深入浅出...(三)Subject RxSwift 深入浅出(四)控件应用 RxSwift 深入浅出(五)tableView应用 RxSwift 深入浅出(六)RxDataSources RxSwift 深入浅出(七...)网络封装 RxSwift 深入浅出(八)开发总结 上面是经常使用的高阶函数,其实和swift的高阶函数是非常类似的,下面再讲几个有意思的高阶函数
为了获取到适合iOS设备使用的SDK,我们选择工程Target为DTCoreText(iOS),并依次选择工程->TARGETS->DTCoreText(iOS)->Deployment Info,选择需要最低支持的系统版本...image.png 4.模拟器和真机分别编译 使用commadn+B执行代码编译,注意一定要选择正确的Target,我们既然是用于iOS,就应该选择DTCoreText (iOS)这个Target进行编译...通过这个单元格类,我们可以方便的设置富文本以及获取单元格高度。以下是使用DTAttributedTextCell显示富文本的核心代码: 3.1....:%d",i]]; } //这里提供的Html图片链接,没有宽高属性,代码中已经演示了如何处理 int k = i % 6;...中拖入工程就可以使用了。
iOS表视图高度自适应可以节省很多麻烦,尤其是涉及到复杂的业务逻辑时,今天尝试了使用Masonry和FDTemplatelayoutCell来布局表视图单元格,从而达到单元格高度自适应的效果,这里就总结了这其中使用的要点和注意问题...首先,为了实现表视图的单元格高度自适应,我们需要用到Masony和FDTemplatelayoutCell这两个第三方的类库。同时这里使用一个简化的订单界面来说明使用,效果图如下: ?...我们需要做的就是使用Masonry对视图单元格中的位于最底部的视图设置bottom约束,使其能够确定距离单元格最低端的距离。...使用的时候关键步骤包括: 1、注册表视图的单元格 这里分为NIb文件和普通类文件的单元格注册,我使用的是xib文件创建的单元格,代码如下: - (UITableView *)tableView{...; } return _tableView; } 2、返回单元格高度 返回单元格高度我们就不必计算了,使用如下的方法来返回 //单元格高度 - (CGFloat)tableView:(
最近在项目中经常用到UITableView中的cell中带有UITextField或UITextView的情况,然后在这种场景下,当我们点击屏幕较下方的cell进行编辑时,这时候键盘弹出来会出现遮挡待输入的...这个问题在之前我们的随笔iOS学习——键盘弹出遮挡输入框问题解决方案中也有讲过对应的解决方案,但是该方案在最近的应用中还有点小问题,我们在这里重新进行处理好。...,在这个过程中我们需要回传什么信息,才能保证我们的可以对我们控制器中的tableview进行控制。... 我们在对tableview的上移进行调整时,我们需要知道当前编辑的cell相对屏幕的位置,然后才能判断是否需要上移tableview以及上移多少。...cell的应用,首先,我们再主控制器中定义几个属性来保存我们键盘弹出时tableview的contentOffset以及当前编辑cell的frame,然后在应用自定义cell时设定我们的两个回调block