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,是会话列表的控制器,这里我们为了演示,仅仅完善其中的界面,一些逻辑代码暂时省略。

你可能感兴趣的:(ios,环信)