ifish/Ifish/UMCommunity/UMCommunitySDK/UMCommunityUI/Common/User/UMComUserTableViewController.m

185 lines
5.6 KiB
Objective-C

//
// UMComUserTableViewController.m
// UMCommunity
//
// Created by wyq.Cloudayc on 3/22/16.
// Copyright © 2016 Umeng. All rights reserved.
//
#import "UMComUserTableViewController.h"
#import <UMComDataStorage/UMComUser.h>
#import "UMComClickActionDelegate.h"
#import "UMComLoginManager.h"
#import "UMComShowToast.h"
#import "UMComBarButtonItem.h"
#import "UIViewController+UMComAddition.h"
#import "UMComUserOperationFinishDelegate.h"
#import "UMComUserTableViewCell.h"
#import "UMComUserListDataController.h"
#define UMComUserCellHeightWithDistance 61
#define UMComUserCellHeight 49
static NSString *UMComUserTableViewCellIdentifier = @"UMComUserTableViewCellIdentifier";
@interface UMComUserTableViewController ()
<UMComClickActionDelegate, UITableViewDataSource, UITableViewDelegate>
@end
@implementation UMComUserTableViewController
- (id)initWithCompletion:(void (^)(UIViewController *viewController))completion
{
self = [super init];
if (self) {
self.completion = completion;
UMComBarButtonItem *rightButtonItem = [[UMComBarButtonItem alloc] initWithTitle:UMComLocalizedString(@"FinishStep",@"完成") target:self action:@selector(onClickNext)];
[self.navigationItem setRightBarButtonItem:rightButtonItem];
}
return self;
}
- (void)onClickNext
{
if (self.completion) {
self.completion(self);
}
}
- (void)viewDidLoad {
[super viewDidLoad];
self.isAutoStartLoadData = YES;
self.tableView.rowHeight = _showDistance ? 67 : 54;
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
self.tableView.delegate = self;
self.tableView.dataSource = self;
if (self.userList.count > 0) {
[self.dataController.dataArray addObjectsFromArray:self.userList];
[self.tableView reloadData];
}
if (self.title) {
[self setForumUITitle:self.title];
}else{
[self setForumUITitle:UMComLocalizedString(@"userList", @"用户列表")];
}
[self.tableView registerNib:[UINib nibWithNibName:@"UMComUserTableViewCell" bundle:nil] forCellReuseIdentifier:UMComUserTableViewCellIdentifier];
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.dataController.dataArray.count;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (_showDistance) {
return UMComUserCellHeightWithDistance;
}
else {
return UMComUserCellHeight;
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UMComUserTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:UMComUserTableViewCellIdentifier];
cell.delegate = self;
if (indexPath.row < self.dataController.dataArray.count) {
UMComUser *user = self.dataController.dataArray[indexPath.row];
cell.showDistance = _showDistance;
[cell reloadCellWithUser:user];
}
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UMComUser *user = self.dataController.dataArray[indexPath.row];
if (_callbackBlock) {
_callbackBlock(self, UMComUserTableViewCallBackEventUser, user);
}
}
- (void)customObj:(id)obj clickOnFollowUser:(UMComUser *)user
{
__weak typeof(self) weakSelf = self;
[UMComLoginManager performLogin:self completion:^(id responseObject, NSError *error) {
if (!error) {
BOOL isFollow = !([user.relation integerValue] == 1 || [user.relation integerValue] == 3);
[(UMComUserListDataController *)weakSelf.dataController followOrDisFollowUser:user completion:^(id responseObject, NSError *error) {
[UMComShowToast focuseUserSuccess:error focused:isFollow];
[weakSelf.tableView reloadData];
if (weakSelf.userOperationFinishDelegate && [self.userOperationFinishDelegate respondsToSelector:@selector(focusedUserOperationFinish:)]) {
[weakSelf.userOperationFinishDelegate focusedUserOperationFinish:user];
}
}];
}
}];
}
- (void)insertUserToTableView:(UMComUser *)user
{
if (![user isKindOfClass:[UMComUser class]]) {
return;
}
if (![self.dataController.dataArray containsObject:user]) {
[self.dataController.dataArray insertObject:user atIndex:0];
}
[self.tableView reloadData];
}
- (void)deleteUserFromTableView:(UMComUser *)deleteUser
{
if (!deleteUser) {
return;
}
__weak typeof(self) weakSelf = self;
if ([deleteUser isKindOfClass:[UMComUser class]]) {
[self.dataController.dataArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
UMComUser *user = (UMComUser *)obj;
if ([user.uid isEqualToString:deleteUser.uid]) {
*stop = YES;
[weakSelf.dataController.dataArray removeObject:user];
[weakSelf.tableView reloadData];
}
}];
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
@end