iOS 集成环信(四)

本节主要仿照环信demo来创建demo的界面。

我们在使用环信的demo可以看到环信的整个界面框架是UITabBarController作为主控制器,里面装了会话ConversationListController、通讯录ContactListViewController和设置SettingsViewController这三个控制器。现在我们来创建这三个控制器。

创建ConversationListController



我们通过环信demo可以看到,ConversationListController是继承于EaseConversationListViewController,而EaseConversationListViewController是继承于EaseRefreshTableViewController的,现在我们先来研究下EaseRefreshTableViewController是怎么实现的。

EaseRefreshTableViewController的实现

我们在做项目的时候,tableView 下拉刷新和上拉加载更多是经常使用的功能,而MJRefresh的上拉刷新是使用最频繁的第三方类,但是,如果我们在每个界面的tableView上添加MJRefresh的相关代码,就会造成代码重复,所以最好能写一个基类,让凡是带有tableview的控制器继承于这个基类,这个子类就能自动带有MJRefresh的相关功能,而EaseRefreshTableViewController就是这么实现的。下面附上部分EaseRefreshTableViewController的代码。

#import <UIKit/UIKit.h>

#define KCELLDEFAULTHEIGHT 50

@interface EaseRefreshTableViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>
{
    NSArray *_rightItems;
}

@property (strong, nonatomic) NSArray *rightItems;
@property (strong, nonatomic) UIView *defaultFooterView;
@property (strong, nonatomic) UITableView *tableView;

@property (strong, nonatomic) NSMutableArray *dataArray;
@property (strong, nonatomic) NSMutableDictionary *dataDictionary;
@property (nonatomic) int page;

@property (nonatomic) BOOL showRefreshHeader;//是否支持下拉刷新
@property (nonatomic) BOOL showRefreshFooter;//是否支持上拉加载
@property (nonatomic) BOOL showTableBlankView;//是否显示无数据时默认背景

- (instancetype)initWithStyle:(UITableViewStyle)style;

- (void)tableViewDidTriggerHeaderRefresh;//下拉刷新事件
- (void)tableViewDidTriggerFooterRefresh;//上拉加载事件

- (void)tableViewDidFinishTriggerHeader:(BOOL)isHeader reload:(BOOL)reload;

@end

具体的实现可以看项目的源代码,路径是:chatDemo-UI3.0 ->EaseUI -> EMUKit ->ViewController ->EaseRefreshTableViewController.h

EaseRefreshTableViewController 这部分的代码帮我们封装了界面刷新和数据为空时候的逻辑代码,我们在做其他的项目的时候可以借鉴一下,能够帮我们省下不少的代码。

EaseConversationListViewController的实现

EaseConversationListViewController继承于EaseRefreshTableViewController,具有上拉刷新等MJRefresh相关功能,并重写了tableViewDidTriggerHeaderRefresh这个方法。具体的实现大家去看下ChatDemo-UI3.0的源码吧。

ConversationListController的实现

ConversationListController继承于EaseConversationListViewController,是会话列表的控制器,这里我们为了演示,仅仅完善其中的界面,一些逻辑代码暂时省略。

时间: 2024-08-29 13:20:09

iOS 集成环信(四)的相关文章

[iOS]集成环信SDK然后运行时候crash了-[NSBundle initWithURL:]: nil URL argument&#39;

Crash的reason是-[NSBundle initWithURL:]: nil URL argument' 1.首先我是用cocoapods导入的环信的SDK.然后怎么运行怎么crash. 2.后来我就把cocoapods里的环信SDK拖到桌面,然后删除工程cocoapods里面的环信SDK,改成手动拖入,然后编译,运行,不crash了! 有错误还忘您指出,如果这篇文章帮助到您了,或者您有什么建议和补充,都可以留言告诉我哦! [iOS]集成环信SDK然后运行时候crash了-[NSBund

iOS集成环信推送,最详细流程(证书创建、环信集成)

这篇博客是我从我的CSDN上办过来的,排版有些混论,不知道为什么博客园不支持MarkDown编辑,想看原文排版的话传送门在这里http://blog.csdn.net/mumubumaopao/article/details/53423393 这几天项目里又用到了环信的推送,虽然之前做过,但是很久不做还是有很多细节没有注意到,所以还是决定从头开始做一遍,把每一个环节都详细记录下来,同样的把每一个坑也记录下来.方便自己以后做的时候忘记哪个流程了可以在看一遍.我很能理解那种遇到问题网上百度一堆类同的

iOS 集成环信(三)

部分转载于环信官网 集成SDK基础功能 这节文章主要介绍了环信初始化.注册和登陆等功能.因为环信demo确实做得比较好,但是功能太多,想从里面提取部分功能比较困难,所以写这篇文章记录下集成环信的过程. EaseUI使用指南 EaseUI封装了IM功能常用的控件(如聊天会话,会话列表,联系人列表),旨在帮助开发者快速集成环信SDK.EaseUI里面的代码都是开源的,我们如果有兴趣可以研究下EaseUI的代码,看下他们是怎么封装代码的. 快速集成 在我们从官方下载下载好的SDK中,有一个文件夹叫Ea

iOS 集成环信聊天界面

现在即时通讯好多都是用的环信, 但是有些项目并不需要环信所有的界面, 比如登录, 我们一般放到后台 现在是把环信的聊天界面集成到我们的项目 1. 新建项目, 把环信的依赖库以及SDK导入到项目中, 添加pch文件, 把项目的Other Linker Flags 改成 -ObjC 2. 把环信demo的几个文件导入项目: 3rdparty, Category, Custom, Resources, Class ->Chat -> ChatView, 还有它的define文件ChatDemoUID

李洪强iOS开发本人集成环信的经验总结_09_处理好友请求

李洪强iOS开发本人集成环信的经验总结_09_处理好友请求 实现这种效果: 01 - 遵守处理好友请求的代理协议 02  - 设置代理 03 - 实现代理方法 04 - 实现代理中用到的方法 

iOS:集成环信EaseMobSDK单聊功能

当然在集成环信之前需要一些准备操作: 1.首先注册环信开发者账号,直接进入环信官网注册即可:http://www.easemob.com 2.按照文档一步一步将需要的文件全部拖入工程中:http://docs.easemob.com/start/start 以下是我集成的文件:使用 EaseUI集成:http://docs.easemob.com/start/300iosclientintegration/140easeuiuseguide libEaseMobClientSDK.a包 Chat

集成环信 - 基础设置

环信集成基础设置: http://v.youku.com/v_show/id_XMTMwMDQ5MDA0NA==.html?from=s1.8-1-2.999&f=23630826&sf=10202 other link flag: libraries 集成环信UI, 引入文件

集成环信时遇到的问题file not found: libEaseMobClientSDK.a

集成环信时遇到的问题 build setting环信SDK集成libEaseMobClientSDKL file not found: libEaseMobClientSDK.a clang: er 今天集成环信,说编译的时候不能找到.a文件.在模拟器上出现此错误,现将我出现错误的原因及解决方法晒出,希望能够帮助将来跟我一样遇到困难的人. 原因例如以下:在Build Settings下Linking 下的other Linker Flags中加入了-ObjC.-all_load或-force_l

李洪强iOS开发本人集成环信的经验总结_01

01 - 在集成完环信的SDK的时候,再将EASEUI导入的时候,报了17个错误 这个时候,需要在pch文件中导入easeUI的头文件,但是一定要这种格式导入 runtime error 类似这样的问题,需要注意,您使用了xcode的pch文件,需要把所有的import放到objc内部. #ifdef __OBJC__…#endif