消息模块-下拉刷新列表

This commit is contained in:
fengshuo
2022-04-25 10:54:04 +08:00
parent 139590292f
commit dbd2a97b14
3 changed files with 48 additions and 13 deletions

View File

@@ -40,7 +40,7 @@ target 'xplan-ios' do
#pop动画 #pop动画
pod 'pop', '~> 1.0.12' pod 'pop', '~> 1.0.12'
#云信 #云信
pod 'NIMSDK_LITE', '~> 7.8.3' pod 'NIMSDK_LITE', '~> 9.0.1'
#下拉刷新控件 #下拉刷新控件
pod 'MJRefresh' pod 'MJRefresh'
#登录的 #登录的

View File

@@ -47,7 +47,7 @@ PODS:
- mob_sharesdk/ShareSDK - mob_sharesdk/ShareSDK
- MOBFoundation (>= 3.2.9) - MOBFoundation (>= 3.2.9)
- MOBFoundation (3.2.27) - MOBFoundation (3.2.27)
- NIMSDK_LITE (7.8.5) - NIMSDK_LITE (9.0.1)
- NTESBaseComponent (1.4) - NTESBaseComponent (1.4)
- NTESQuickPass (3.2.6): - NTESQuickPass (3.2.6):
- NTESBaseComponent - NTESBaseComponent
@@ -108,7 +108,7 @@ DEPENDENCIES:
- mob_sharesdk/ShareSDKPlatforms/Apple - mob_sharesdk/ShareSDKPlatforms/Apple
- mob_sharesdk/ShareSDKPlatforms/QQ - mob_sharesdk/ShareSDKPlatforms/QQ
- mob_sharesdk/ShareSDKPlatforms/WeChat - mob_sharesdk/ShareSDKPlatforms/WeChat
- NIMSDK_LITE (~> 7.8.3) - NIMSDK_LITE (~> 9.0.1)
- NTESQuickPass - NTESQuickPass
- pop (~> 1.0.12) - pop (~> 1.0.12)
- QGVAPlayer - QGVAPlayer
@@ -130,6 +130,7 @@ SPEC REPOS:
https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git: https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git:
- IQKeyboardManager - IQKeyboardManager
- JXPagingView - JXPagingView
- NIMSDK_LITE
- NTESBaseComponent - NTESBaseComponent
- NTESQuickPass - NTESQuickPass
- QGVAPlayer - QGVAPlayer
@@ -151,7 +152,6 @@ SPEC REPOS:
- MJRefresh - MJRefresh
- mob_sharesdk - mob_sharesdk
- MOBFoundation - MOBFoundation
- NIMSDK_LITE
- pop - pop
- Protobuf - Protobuf
- Qiniu - Qiniu
@@ -192,7 +192,7 @@ SPEC CHECKSUMS:
MJRefresh: ec9c53ff4abf3a9237b4283862f1bd51c2ee3fdb MJRefresh: ec9c53ff4abf3a9237b4283862f1bd51c2ee3fdb
mob_sharesdk: a60006891a079486ff3269ed326adfa05a967c01 mob_sharesdk: a60006891a079486ff3269ed326adfa05a967c01
MOBFoundation: efdc3ce6b843fbc10ae8c1c6122a02b0d845b39b MOBFoundation: efdc3ce6b843fbc10ae8c1c6122a02b0d845b39b
NIMSDK_LITE: 8e28ae0a26dd1dccc4684b697381f0a72a733f51 NIMSDK_LITE: c376a3f90c1cd79d9cca39fbdeb6a718e99e244a
NTESBaseComponent: 9e97373eec7e5a26c39db26477bf99a37ee9e71a NTESBaseComponent: 9e97373eec7e5a26c39db26477bf99a37ee9e71a
NTESQuickPass: 781bd12ee63681389fe9b646c837fa76e3a00e6e NTESQuickPass: 781bd12ee63681389fe9b646c837fa76e3a00e6e
pop: d582054913807fd11fd50bfe6a539d91c7e1a55a pop: d582054913807fd11fd50bfe6a539d91c7e1a55a
@@ -215,6 +215,6 @@ SPEC CHECKSUMS:
YYText: 5c461d709e24d55a182d1441c41dc639a18a4849 YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
YYWebImage: 5f7f36aee2ae293f016d418c7d6ba05c4863e928 YYWebImage: 5f7f36aee2ae293f016d418c7d6ba05c4863e928
PODFILE CHECKSUM: f2682cf01b67e68f847979b09786b508a737bed6 PODFILE CHECKSUM: d02ba4da989cc65b5e850b0ff42a9ef68dcc1f1e
COCOAPODS: 1.11.2 COCOAPODS: 1.11.2

View File

@@ -9,6 +9,7 @@
#import <Masonry/Masonry.h> #import <Masonry/Masonry.h>
#import <IQKeyboardManager/IQKeyboardManager.h> #import <IQKeyboardManager/IQKeyboardManager.h>
#import <TZImagePickerController/TZImagePickerController.h> #import <TZImagePickerController/TZImagePickerController.h>
#import <MJRefresh/MJRefresh.h>
///Tool ///Tool
#import "XCCurrentVCStackManager.h" #import "XCCurrentVCStackManager.h"
#import "NIMMessageMaker.h" #import "NIMMessageMaker.h"
@@ -44,6 +45,8 @@
@property (nonatomic, strong) UserInfoModel *userInfo; @property (nonatomic, strong) UserInfoModel *userInfo;
/// ///
@property (nonatomic,strong) SessionToolbarView *toolbarView; @property (nonatomic,strong) SessionToolbarView *toolbarView;
///
@property (nonatomic,strong) NIMMessage *lastMessage;
@end @end
@implementation SessionViewController @implementation SessionViewController
@@ -73,12 +76,49 @@
[super viewDidLoad]; [super viewDidLoad];
[IQKeyboardManager sharedManager].enable = NO; [IQKeyboardManager sharedManager].enable = NO;
[IQKeyboardManager sharedManager].enableAutoToolbar = NO; [IQKeyboardManager sharedManager].enableAutoToolbar = NO;
[self initData]; [self initHeaderAndFooterRrfresh];
[[NIMSDK sharedSDK].chatManager addDelegate:self]; [[NIMSDK sharedSDK].chatManager addDelegate:self];
[[NIMSDK sharedSDK].conversationManager addDelegate:self]; [[NIMSDK sharedSDK].conversationManager addDelegate:self];
[self.presenter getUserInfo:self.session.sessionId]; [self.presenter getUserInfo:self.session.sessionId];
} }
- (void)initHeaderAndFooterRrfresh {
MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)];
header.stateLabel.font = [UIFont systemFontOfSize:10.0];
header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0];
header.stateLabel.textColor = [ThemeColor secondTextColor];
header.lastUpdatedTimeLabel.textColor = [ThemeColor secondTextColor];
self.sessionTableView.mj_header = header;
[self headerRefresh];
[self initData];
}
- (void)headerRefresh {
if (self.messages.count > 0) {
[[[NIMSDK sharedSDK] conversationManager] messagesInSession:self.session message:self.messages.firstObject limit:20 completion:^(NSError * _Nullable error, NSArray<NIMMessage *> * _Nullable messages) {
[self.sessionTableView.mj_header endRefreshing];
if (error == nil && messages.count > 0) {
for (int i = ((int)messages.count -1); i > 0; i--) {
NIMMessage * message = [messages objectAtIndex:i];
[self.messages insertObject:message atIndex:0];
}
}
[self.sessionTableView reloadData];
}];
} else {
[[[NIMSDK sharedSDK] conversationManager] messagesInSession:self.session message:nil limit:20 completion:^(NSError * _Nullable error, NSArray<NIMMessage *> * _Nullable messages) {
[self.sessionTableView.mj_header endRefreshing];
if (error == nil) {
[self.messages addObjectsFromArray:messages];
}
[self.sessionTableView reloadData];
[self.sessionTableView nim_scrollToBottom:NO];
}];
}
}
#pragma mark - Private Method
- (void)initViews { - (void)initViews {
NIMUser * user = [[NIMSDK sharedSDK].userManager userInfo:self.session.sessionId]; NIMUser * user = [[NIMSDK sharedSDK].userManager userInfo:self.session.sessionId];
if (user) { if (user) {
@@ -109,11 +149,6 @@
} }
- (void)initData { - (void)initData {
NSArray<NIMMessage *> *messages = [[NIMSDK sharedSDK].conversationManager messagesInSession:self.session message:nil limit:1000];
[self.messages addObjectsFromArray:messages.copy];
[self.sessionTableView reloadData];
[self.sessionTableView nim_scrollToBottom:NO];
[[NIMSDK sharedSDK].userManager fetchUserInfos:@[self.session.sessionId] completion:^(NSArray<NIMUser *> * _Nullable users, NSError * _Nullable error) { [[NIMSDK sharedSDK].userManager fetchUserInfos:@[self.session.sessionId] completion:^(NSArray<NIMUser *> * _Nullable users, NSError * _Nullable error) {
if (!error) { if (!error) {
self.title = users[0].userInfo.nickName; self.title = users[0].userInfo.nickName;
@@ -276,7 +311,7 @@
[self.toolbarView mas_updateConstraints:^(MASConstraintMaker *make) { [self.toolbarView mas_updateConstraints:^(MASConstraintMaker *make) {
make.bottom.mas_equalTo(self.view).offset(-heightFromBottom); make.bottom.mas_equalTo(self.view).offset(-heightFromBottom);
}]; }];
[self.sessionTableView nim_scrollToBottom:YES]; [self.sessionTableView nim_scrollToBottom:NO];
} }
- (void)sendTextMessage:(NSString *)text { - (void)sendTextMessage:(NSString *)text {