From a31dd206ac93e64c335f0902d40e3e5aa4d649d8 Mon Sep 17 00:00:00 2001 From: fengshuo <963787902@qq.com> Date: Thu, 14 Apr 2022 00:35:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=B6=E6=97=8F=E8=B6=85=E7=BA=A7=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=91=98=E6=90=9C=E7=B4=A2=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xplan-ios.xcodeproj/project.pbxproj | 12 ++ xplan-ios/Main/Mine/Presenter/XPMinePresent.h | 3 + xplan-ios/Main/Mine/Presenter/XPMinePresent.m | 20 ++- xplan-ios/Main/Mine/Protocol/XPMineProtocol.h | 4 +- .../Main/Mine/View/Guild/Api/Api+Guild.h | 6 + .../Main/Mine/View/Guild/Api/Api+Guild.m | 9 + .../SuperAdmin/GuildSearchSuperAdminModel.h | 26 +++ .../SuperAdmin/GuildSearchSuperAdminModel.m | 12 ++ .../Guild/Presenter/XPGuildSearchPresenter.h | 4 + .../Guild/Presenter/XPGuildSearchPresenter.m | 12 ++ .../Guild/Protocol/XPGuildSearchProtocol.h | 2 + .../XPGuildSearchSuperAdminTableViewCell.h | 23 +++ .../XPGuildSearchSuperAdminTableViewCell.m | 163 ++++++++++++++++++ .../XPMineGuildSuperAdminSetViewController.m | 11 +- .../Guild/View/XPMineClanViewController.m | 15 +- .../View/XPMineGuildSearchViewController.h | 7 +- .../View/XPMineGuildSearchViewController.m | 67 ++++++- .../Guild/View/XPMineGuildViewController.m | 20 +++ .../Main/Mine/View/XPMineViewController.m | 61 ++++++- 19 files changed, 456 insertions(+), 21 deletions(-) create mode 100644 xplan-ios/Main/Mine/View/Guild/Model/SuperAdmin/GuildSearchSuperAdminModel.h create mode 100644 xplan-ios/Main/Mine/View/Guild/Model/SuperAdmin/GuildSearchSuperAdminModel.m create mode 100644 xplan-ios/Main/Mine/View/Guild/View/Cell/SuperAdmin/XPGuildSearchSuperAdminTableViewCell.h create mode 100644 xplan-ios/Main/Mine/View/Guild/View/Cell/SuperAdmin/XPGuildSearchSuperAdminTableViewCell.m diff --git a/xplan-ios.xcodeproj/project.pbxproj b/xplan-ios.xcodeproj/project.pbxproj index c46ac3ac..6717879e 100644 --- a/xplan-ios.xcodeproj/project.pbxproj +++ b/xplan-ios.xcodeproj/project.pbxproj @@ -631,6 +631,8 @@ E8C6FFEA2755040B004DC9F0 /* XPHomeSearchNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C6FFE92755040B004DC9F0 /* XPHomeSearchNavView.m */; }; E8C6FFED27550CC2004DC9F0 /* HomeSearchResultModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C6FFEC27550CC2004DC9F0 /* HomeSearchResultModel.m */; }; E8CEA03D26EA3DE500644B44 /* LoginPasswordPresent.m in Sources */ = {isa = PBXBuildFile; fileRef = E8CEA03C26EA3DE500644B44 /* LoginPasswordPresent.m */; }; + E8D34D41280714F3009C4835 /* GuildSearchSuperAdminModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D40280714F3009C4835 /* GuildSearchSuperAdminModel.m */; }; + E8D34D4428071626009C4835 /* XPGuildSearchSuperAdminTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D4328071626009C4835 /* XPGuildSearchSuperAdminTableViewCell.m */; }; E8D4824A278D1F73003C1D08 /* XPAcrossRoomPKInviteView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D48249278D1F73003C1D08 /* XPAcrossRoomPKInviteView.m */; }; E8D4824D278D2CE4003C1D08 /* XPAcrossRoomPKInviteResultView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D4824C278D2CE4003C1D08 /* XPAcrossRoomPKInviteResultView.m */; }; E8D48250278D68BA003C1D08 /* XPAcrpssRoomPKPanelView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D4824F278D68BA003C1D08 /* XPAcrpssRoomPKPanelView.m */; }; @@ -1954,6 +1956,10 @@ E8CEA03B26EA3DE500644B44 /* LoginPasswordPresent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginPasswordPresent.h; sourceTree = ""; }; E8CEA03C26EA3DE500644B44 /* LoginPasswordPresent.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoginPasswordPresent.m; sourceTree = ""; }; E8CEA03E26EA3E0200644B44 /* LoginPasswordProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginPasswordProtocol.h; sourceTree = ""; }; + E8D34D3F280714F3009C4835 /* GuildSearchSuperAdminModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GuildSearchSuperAdminModel.h; sourceTree = ""; }; + E8D34D40280714F3009C4835 /* GuildSearchSuperAdminModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GuildSearchSuperAdminModel.m; sourceTree = ""; }; + E8D34D4228071626009C4835 /* XPGuildSearchSuperAdminTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGuildSearchSuperAdminTableViewCell.h; sourceTree = ""; }; + E8D34D4328071626009C4835 /* XPGuildSearchSuperAdminTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGuildSearchSuperAdminTableViewCell.m; sourceTree = ""; }; E8D48248278D1F72003C1D08 /* XPAcrossRoomPKInviteView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAcrossRoomPKInviteView.h; sourceTree = ""; }; E8D48249278D1F73003C1D08 /* XPAcrossRoomPKInviteView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAcrossRoomPKInviteView.m; sourceTree = ""; }; E8D4824B278D2CE4003C1D08 /* XPAcrossRoomPKInviteResultView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAcrossRoomPKInviteResultView.h; sourceTree = ""; }; @@ -5102,6 +5108,8 @@ E8C167292806B1E500ECB15C /* XPGuildSuperAdminSetTableViewCell.m */, E8C1672B2806BD8B00ECB15C /* XPGuildSuperAdminRoomCollectionViewCell.h */, E8C1672C2806BD8B00ECB15C /* XPGuildSuperAdminRoomCollectionViewCell.m */, + E8D34D4228071626009C4835 /* XPGuildSearchSuperAdminTableViewCell.h */, + E8D34D4328071626009C4835 /* XPGuildSearchSuperAdminTableViewCell.m */, ); path = SuperAdmin; sourceTree = ""; @@ -5204,6 +5212,8 @@ E8C167262806A68F00ECB15C /* GuildRoomInfoModel.m */, E8C1672E2806C01500ECB15C /* GuildSuperAdminInfoModel.h */, E8C1672F2806C01500ECB15C /* GuildSuperAdminInfoModel.m */, + E8D34D3F280714F3009C4835 /* GuildSearchSuperAdminModel.h */, + E8D34D40280714F3009C4835 /* GuildSearchSuperAdminModel.m */, ); path = SuperAdmin; sourceTree = ""; @@ -6216,6 +6226,7 @@ 18E7B1B726E8B2D10064BC9B /* Api+Main.m in Sources */, E8B846D326FDDBE600A777FE /* XPMineRechargeTableViewCell.m in Sources */, E8D48256278D83AE003C1D08 /* XPAcrossRoomPKPanelUserView.m in Sources */, + E8D34D41280714F3009C4835 /* GuildSearchSuperAdminModel.m in Sources */, E824546126F5F4E400BE8163 /* XPMineResetPayPwdViewController.m in Sources */, E81D58822720082A003063FE /* MicroWaveView.m in Sources */, E8B825C226EA00DF009E8E9F /* LoginVerifCodePresent.m in Sources */, @@ -6431,6 +6442,7 @@ 9B16A34827E17D9B00E13A98 /* XPRoomTrumpetViewController.m in Sources */, 186A534D26FC6ED900D67B2C /* TTActionSheetView.m in Sources */, 9B7D8857279C099C00785A25 /* XPSkillCardListPropCell.m in Sources */, + E8D34D4428071626009C4835 /* XPGuildSearchSuperAdminTableViewCell.m in Sources */, E855515128055581005F293F /* XPGuildTimeMonthPickerView.m in Sources */, E83DB481274649FB00D8CBD1 /* XPGiftBannerUserInfoModel.m in Sources */, 9B33E3CE27D8540C003B0E62 /* XPVoiceCardViewController.m in Sources */, diff --git a/xplan-ios/Main/Mine/Presenter/XPMinePresent.h b/xplan-ios/Main/Mine/Presenter/XPMinePresent.h index 457dec01..ff2053e0 100644 --- a/xplan-ios/Main/Mine/Presenter/XPMinePresent.h +++ b/xplan-ios/Main/Mine/Presenter/XPMinePresent.h @@ -19,6 +19,9 @@ NS_ASSUME_NONNULL_BEGIN /// 获取用户信息 - (void)getUserInfo; + +/// 获取家族详细的信息 +- (void)getClanDetailInfo; @end NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/Presenter/XPMinePresent.m b/xplan-ios/Main/Mine/Presenter/XPMinePresent.m index 9436f447..674f3490 100644 --- a/xplan-ios/Main/Mine/Presenter/XPMinePresent.m +++ b/xplan-ios/Main/Mine/Presenter/XPMinePresent.m @@ -10,9 +10,11 @@ #import "AccountInfoStorage.h" ///Api #import "Api+Mine.h" +#import "Api+Guild.h" ///Model #import "XPMineItemModel.h" #import "UserInfoModel.h" +#import "ClanDetailInfoModel.h" ///Protocol #import "XPMineProtocol.h" @implementation XPMinePresent @@ -75,11 +77,6 @@ realNameItem.type = XPMineItemType_Real_Name_Authentic; realNameItem.cornerType = UIRectCornerBottomLeft | UIRectCornerBottomRight; - XPMineItemModel * guildItem = [[XPMineItemModel alloc] init]; - guildItem.itemName = @"我的工会"; - guildItem.itemImageName = @"mine_normal_my_guild"; - guildItem.type = XPMineItemType_My_Guild; - XPMineItemModel * visitorItem = [[XPMineItemModel alloc] init]; visitorItem.itemName = @"访客记录"; visitorItem.itemImageName = @"mine_normal_visitor"; @@ -87,12 +84,12 @@ BaseViewController *vc = [self getView]; visitorItem.unReadCount = [vc.tabBarItem.badgeValue integerValue]; + XPMineItemModel * fansTeamItem = [[XPMineItemModel alloc] init]; fansTeamItem.itemName = @"粉丝团"; fansTeamItem.itemImageName = @"mine_normal_anchor_fansTeam"; fansTeamItem.type = XPMineItemType_FansTeam; - NSArray * array = @[myRoomItem,teenagerItem, myDressUp, guildItem, inviteFriend, visitorItem,fansTeamItem, realNameItem]; - + NSArray * array = @[myRoomItem,teenagerItem, myDressUp, inviteFriend, visitorItem,fansTeamItem, realNameItem]; [[self getView] onGetNormalItemsSuccess:array]; } @@ -110,4 +107,13 @@ }] uid:uid]; } +/// 获取家族详细的信息 +- (void)getClanDetailInfo { + NSString * uid = [[AccountInfoStorage instance] getUid]; + [Api getClanDetailInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + ClanDetailInfoModel * clanDetailInfo = [ClanDetailInfoModel modelWithDictionary:data.data]; + [[self getView] onGetClanDetailInfoSuccess:clanDetailInfo]; + }] uid:uid]; +} + @end diff --git a/xplan-ios/Main/Mine/Protocol/XPMineProtocol.h b/xplan-ios/Main/Mine/Protocol/XPMineProtocol.h index 4ce9fcb1..d228c994 100644 --- a/xplan-ios/Main/Mine/Protocol/XPMineProtocol.h +++ b/xplan-ios/Main/Mine/Protocol/XPMineProtocol.h @@ -8,7 +8,7 @@ #import NS_ASSUME_NONNULL_BEGIN -@class XPMineItemModel, UserInfoModel; +@class XPMineItemModel, UserInfoModel, ClanDetailInfoModel; @protocol XPMineProtocol /// 获取赛事模块的items @@ -22,6 +22,8 @@ NS_ASSUME_NONNULL_BEGIN - (void)onGetCardItemsSuccess:(NSArray *)cardItems; ///获取用户信息成功 - (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo; +///获取家族公会信息成功 +- (void)onGetClanDetailInfoSuccess:(ClanDetailInfoModel *)clanInfo; @end NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/View/Guild/Api/Api+Guild.h b/xplan-ios/Main/Mine/View/Guild/Api/Api+Guild.h index 5e9dbbb2..b52f4c30 100644 --- a/xplan-ios/Main/Mine/View/Guild/Api/Api+Guild.h +++ b/xplan-ios/Main/Mine/View/Guild/Api/Api+Guild.h @@ -173,6 +173,12 @@ NS_ASSUME_NONNULL_BEGIN /// @param completion 完成 /// @param targetUid 移除的人的uid + (void)clanRemoveSuperAdmin:(HttpRequestHelperCompletion)completion targetUid:(NSString *)targetUid; + +/// 添加工会超管 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param erbanNo 搜索的id ++ (void)searchGuildSuperAdmin:(HttpRequestHelperCompletion)completion uid:(NSString *)uid erbanNo:(NSString *)erbanNo; @end NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/View/Guild/Api/Api+Guild.m b/xplan-ios/Main/Mine/View/Guild/Api/Api+Guild.m index 589b518b..865d0dd8 100644 --- a/xplan-ios/Main/Mine/View/Guild/Api/Api+Guild.m +++ b/xplan-ios/Main/Mine/View/Guild/Api/Api+Guild.m @@ -223,4 +223,13 @@ [self makeRequest:@"hall/superManager/remove" method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, targetUid,nil]; } + +/// 添加工会超管 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param erbanNo 搜索的id ++ (void)searchGuildSuperAdmin:(HttpRequestHelperCompletion)completion uid:(NSString *)uid erbanNo:(NSString *)erbanNo { + [self makeRequest:@"hall/superManager/search" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, erbanNo, nil]; +} + @end diff --git a/xplan-ios/Main/Mine/View/Guild/Model/SuperAdmin/GuildSearchSuperAdminModel.h b/xplan-ios/Main/Mine/View/Guild/Model/SuperAdmin/GuildSearchSuperAdminModel.h new file mode 100644 index 00000000..d34cd890 --- /dev/null +++ b/xplan-ios/Main/Mine/View/Guild/Model/SuperAdmin/GuildSearchSuperAdminModel.h @@ -0,0 +1,26 @@ +// +// GuildSearchSuperAdminModel.h +// xplan-ios +// +// Created by 冯硕 on 2022/4/13. +// +#import +#import "XPEnum.h" +NS_ASSUME_NONNULL_BEGIN + +@interface GuildSearchSuperAdminModel : NSObject +///用户的uid +@property (nonatomic,copy) NSString *uid; +///平台id +@property (nonatomic,copy) NSString *erbanNo; +///昵称 +@property (nonatomic,copy) NSString *nick; +///头像 +@property (nonatomic,copy) NSString *avatar; +///性别 +@property (nonatomic,assign) GenderType gender; +///是否已经是超管 +@property (nonatomic,assign) BOOL hasSet; +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/View/Guild/Model/SuperAdmin/GuildSearchSuperAdminModel.m b/xplan-ios/Main/Mine/View/Guild/Model/SuperAdmin/GuildSearchSuperAdminModel.m new file mode 100644 index 00000000..5b9f6b27 --- /dev/null +++ b/xplan-ios/Main/Mine/View/Guild/Model/SuperAdmin/GuildSearchSuperAdminModel.m @@ -0,0 +1,12 @@ +// +// GuildSearchSuperAdminModel.m +// xplan-ios +// +// Created by 冯硕 on 2022/4/13. +// + +#import "GuildSearchSuperAdminModel.h" + +@implementation GuildSearchSuperAdminModel + +@end diff --git a/xplan-ios/Main/Mine/View/Guild/Presenter/XPGuildSearchPresenter.h b/xplan-ios/Main/Mine/View/Guild/Presenter/XPGuildSearchPresenter.h index fbd40a84..902aa3e7 100644 --- a/xplan-ios/Main/Mine/View/Guild/Presenter/XPGuildSearchPresenter.h +++ b/xplan-ios/Main/Mine/View/Guild/Presenter/XPGuildSearchPresenter.h @@ -18,6 +18,10 @@ NS_ASSUME_NONNULL_BEGIN /// 工会添加成员 搜索用户 /// @param key 搜索的关键词 - (void)guildAddMemberSearch:(NSString *)key; + +/// 添加公会超管 +/// @param key 搜索的id +- (void)searchGuildSuperAdmin:(NSString *)key; @end NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/View/Guild/Presenter/XPGuildSearchPresenter.m b/xplan-ios/Main/Mine/View/Guild/Presenter/XPGuildSearchPresenter.m index 746d6351..9e591a8e 100644 --- a/xplan-ios/Main/Mine/View/Guild/Presenter/XPGuildSearchPresenter.m +++ b/xplan-ios/Main/Mine/View/Guild/Presenter/XPGuildSearchPresenter.m @@ -10,6 +10,8 @@ #import "XPGuildSearchProtocol.h" #import "ClanMemberDetailInfoModel.h" #import "GuildSearchUserInfoModel.h" +#import "GuildSearchSuperAdminModel.h" +#import "AccountInfoStorage.h" @implementation XPGuildSearchPresenter /// 搜索家族成员 @@ -34,5 +36,15 @@ } showLoading:YES] key:key type:@"2" page:@"1" pageSize:@"50"]; } +/// 添加公会超管 +/// @param key 搜索的id +- (void)searchGuildSuperAdmin:(NSString *)key { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api searchGuildSuperAdmin:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + GuildSearchSuperAdminModel * info = [GuildSearchSuperAdminModel modelWithDictionary:data.data]; + [[self getView] searchGuildSuperAdminSuccess:@[info]]; + } showLoading:YES] uid:uid erbanNo:key]; +} + @end diff --git a/xplan-ios/Main/Mine/View/Guild/Protocol/XPGuildSearchProtocol.h b/xplan-ios/Main/Mine/View/Guild/Protocol/XPGuildSearchProtocol.h index 0d3e00c8..2104f986 100644 --- a/xplan-ios/Main/Mine/View/Guild/Protocol/XPGuildSearchProtocol.h +++ b/xplan-ios/Main/Mine/View/Guild/Protocol/XPGuildSearchProtocol.h @@ -15,6 +15,8 @@ NS_ASSUME_NONNULL_BEGIN - (void)searchClanMemberListSuccess:(NSArray *)memberList; ///工会添加成员 搜索用户 - (void)guildAddMemberSearchSuccess:(NSArray *)memberList; +///搜索添加工会超管 +- (void)searchGuildSuperAdminSuccess:(NSArray *)memberList; @end NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/View/Guild/View/Cell/SuperAdmin/XPGuildSearchSuperAdminTableViewCell.h b/xplan-ios/Main/Mine/View/Guild/View/Cell/SuperAdmin/XPGuildSearchSuperAdminTableViewCell.h new file mode 100644 index 00000000..118ad608 --- /dev/null +++ b/xplan-ios/Main/Mine/View/Guild/View/Cell/SuperAdmin/XPGuildSearchSuperAdminTableViewCell.h @@ -0,0 +1,23 @@ +// +// XPGuildSearchSuperAdminTableViewCell.h +// xplan-ios +// +// Created by 冯硕 on 2022/4/13. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class GuildSearchSuperAdminModel, XPGuildSearchSuperAdminTableViewCell; +@protocol XPGuildSearchSuperAdminTableViewCellDelegate + +- (void)xPGuildSearchSuperAdminTableViewCell:(XPGuildSearchSuperAdminTableViewCell *)cell didSelectInfo:(GuildSearchSuperAdminModel *)userInfo; + +@end +@interface XPGuildSearchSuperAdminTableViewCell : UITableViewCell +///代理 +@property (nonatomic,weak) id delegate; +@property (nonatomic,strong) GuildSearchSuperAdminModel *userInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/View/Guild/View/Cell/SuperAdmin/XPGuildSearchSuperAdminTableViewCell.m b/xplan-ios/Main/Mine/View/Guild/View/Cell/SuperAdmin/XPGuildSearchSuperAdminTableViewCell.m new file mode 100644 index 00000000..e24241f8 --- /dev/null +++ b/xplan-ios/Main/Mine/View/Guild/View/Cell/SuperAdmin/XPGuildSearchSuperAdminTableViewCell.m @@ -0,0 +1,163 @@ +// +// XPGuildSearchSuperAdminTableViewCell.m +// xplan-ios +// +// Created by 冯硕 on 2022/4/13. +// + +#import "XPGuildSearchSuperAdminTableViewCell.h" +///Third +#import +///Tool +#import "ThemeColor.h" +#import "NetImageView.h" +#import "UIImage+Utils.h" +///Model +#import "GuildSearchSuperAdminModel.h" + +@interface XPGuildSearchSuperAdminTableViewCell () +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///性别 +@property (nonatomic,strong) UIImageView *sexImageView; +///id +@property (nonatomic,strong) UILabel *idLabel; +///设置超管 +@property (nonatomic,strong) UIButton *superAdminButton; +@end + +@implementation XPGuildSearchSuperAdminTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [ThemeColor appCellBackgroundColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.nickLabel]; + [self.contentView addSubview:self.sexImageView]; + [self.contentView addSubview:self.idLabel]; + [self.contentView addSubview:self.superAdminButton]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.contentView); + make.left.mas_equalTo(self.contentView).offset(15); + make.width.height.mas_equalTo(50); + }]; + + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.avatarImageView.mas_centerY).offset(-3); + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(6); + }]; + + [self.sexImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.nickLabel.mas_centerY); + make.left.mas_equalTo(self.nickLabel.mas_right).mas_offset(3); + make.height.width.mas_equalTo(18); + }]; + + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avatarImageView.mas_centerY).offset(2); + make.left.mas_equalTo(self.nickLabel.mas_left); + }]; + + [self.superAdminButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.contentView).offset(-15); + make.width.mas_equalTo(90); + make.height.mas_equalTo(30); + make.centerY.mas_equalTo(self.contentView); + }]; +} + +#pragma mark - Event Response +- (void)superAdminButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGuildSearchSuperAdminTableViewCell:didSelectInfo:)]) { + [self.delegate xPGuildSearchSuperAdminTableViewCell:self didSelectInfo:self.userInfo]; + } +} + +#pragma mark - Getters And Setters +- (void)setUserInfo:(GuildSearchSuperAdminModel *)userInfo { + _userInfo = userInfo; + if (_userInfo) { + self.avatarImageView.imageUrl = _userInfo.avatar; + NSString * nick = _userInfo.nick; + if (nick.length > 8) { + nick = [nick substringToIndex:8]; + } + self.nickLabel.text = nick; + self.sexImageView.image = _userInfo.gender == GenderType_Female ? [UIImage imageNamed:@"common_female"] : [UIImage imageNamed:@"common_male"]; + self.idLabel.text = [NSString stringWithFormat:@"%@", _userInfo.erbanNo]; + self.superAdminButton.enabled = !_userInfo.hasSet; + } +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 25; + _avatarImageView.layer.borderColor = [ThemeColor appMainColor].CGColor; + _avatarImageView.layer.borderWidth = 1; + } + return _avatarImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:18]; + _nickLabel.textColor = [ThemeColor mainTextColor]; + } + return _nickLabel; +} + +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + _sexImageView.userInteractionEnabled = YES; + } + return _sexImageView; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.font = [UIFont systemFontOfSize:12]; + _idLabel.textColor = [ThemeColor secondTextColor]; + } + return _idLabel; +} + +- (UIButton *)superAdminButton { + if (!_superAdminButton) { + _superAdminButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_superAdminButton setTitle:@"设置为超管" forState:UIControlStateNormal]; + [_superAdminButton setTitle:@"已设置为超管" forState:UIControlStateDisabled]; + [_superAdminButton setTitleColor:[ThemeColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_superAdminButton setTitleColor:[ThemeColor disableButtonTextColor] forState:UIControlStateNormal]; + _superAdminButton.titleLabel.font = [UIFont systemFontOfSize:14]; + [_superAdminButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[ThemeColor confirmButtonGradientStartColor], [ThemeColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _superAdminButton.layer.masksToBounds = YES; + _superAdminButton.layer.cornerRadius = 15; + [_superAdminButton addTarget:self action:@selector(superAdminButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _superAdminButton; +} + + +@end diff --git a/xplan-ios/Main/Mine/View/Guild/View/SuperAdmin/XPMineGuildSuperAdminSetViewController.m b/xplan-ios/Main/Mine/View/Guild/View/SuperAdmin/XPMineGuildSuperAdminSetViewController.m index daea6c55..47156434 100644 --- a/xplan-ios/Main/Mine/View/Guild/View/SuperAdmin/XPMineGuildSuperAdminSetViewController.m +++ b/xplan-ios/Main/Mine/View/Guild/View/SuperAdmin/XPMineGuildSuperAdminSetViewController.m @@ -19,6 +19,7 @@ #import "XPGuildSuperAdminSetTableViewCell.h" #import "XPMineGuildEmptyTableViewCell.h" #import "XPMineGuildChooseManagerViewController.h" +#import "XPMineGuildSearchViewController.h" ///P #import "XPSuperAdminSetPresenter.h" #import "XPSuperAdminSetProtocol.h" @@ -58,7 +59,8 @@ - (void)initSubViewConstraints { [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); + make.left.right.top.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.addManagerButton.mas_top); }]; [self.addManagerButton mas_makeConstraints:^(MASConstraintMaker *make) { @@ -150,9 +152,14 @@ } } + #pragma mark - Event Response - (void)addManagerButtonAction:(UIButton *)sender { - + XPMineGuildSearchViewController * searchVC = [[XPMineGuildSearchViewController alloc] init]; + searchVC.searchType = GuildSearchType_Clan_Add_Super_Admin; + searchVC.modalPresentationStyle = UIModalPresentationOverFullScreen; + searchVC.clanOwnerUid = self.clanId; + [self.navigationController presentViewController:searchVC animated:YES completion:nil]; } #pragma mark - Getters And Setters diff --git a/xplan-ios/Main/Mine/View/Guild/View/XPMineClanViewController.m b/xplan-ios/Main/Mine/View/Guild/View/XPMineClanViewController.m index d06926c2..8021a748 100644 --- a/xplan-ios/Main/Mine/View/Guild/View/XPMineClanViewController.m +++ b/xplan-ios/Main/Mine/View/Guild/View/XPMineClanViewController.m @@ -24,6 +24,7 @@ #import "XPMineClanIncomeStatisViewController.h" #import "XPMineAnchorIncomeStatisViewController.h" #import "XPMineGuildSuperAdminSetViewController.h" +#import "XPMineUserInfoViewController.h" ///P #import "XPClanPresenter.h" #import "XPClanProtocol.h" @@ -181,6 +182,16 @@ return [[UIView alloc]init]; } +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + ClanMemberInfoModel * memberInfo = [self.datasource objectAtIndex:indexPath.row]; + XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init]; + userInfoVC.uid = memberInfo.uid.integerValue; + [self.navigationController pushViewController:userInfoVC animated:YES]; + } +} + #pragma mark - XPClanSectionViewDelegate - (void)xPClanSectionView:(XPClanSectionView *)view didClickSearch:(UIButton *)sender { XPMineGuildSearchViewController * searchVC = [[XPMineGuildSearchViewController alloc] init]; @@ -229,7 +240,9 @@ } - (void)xPGuildHeaderView:(XPGuildHeaderView *)view dicSelectOwner:(ClanDetailInfoModel *)guildInfo { - + XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init]; + userInfoVC.uid = guildInfo.clan.elderUid.integerValue; + [self.navigationController pushViewController:userInfoVC animated:YES]; } - (void)xPGuildHeaderView:(XPGuildHeaderView *)view dicTapMenuItem:(GuildHeaderMenuType)menuType { diff --git a/xplan-ios/Main/Mine/View/Guild/View/XPMineGuildSearchViewController.h b/xplan-ios/Main/Mine/View/Guild/View/XPMineGuildSearchViewController.h index b2cde9e8..bf67ae2a 100644 --- a/xplan-ios/Main/Mine/View/Guild/View/XPMineGuildSearchViewController.h +++ b/xplan-ios/Main/Mine/View/Guild/View/XPMineGuildSearchViewController.h @@ -8,13 +8,15 @@ #import "MvpViewController.h" NS_ASSUME_NONNULL_BEGIN -@class XPMineGuildSearchViewController, ClanMemberInfoModel, GuildSearchUserInfoModel; +@class XPMineGuildSearchViewController, ClanMemberInfoModel, GuildSearchUserInfoModel, GuildSearchSuperAdminModel; typedef NS_ENUM(NSInteger, GuildSearchType) { GuildSearchType_Clan_All_Member = 1, ///工会增加新成员 GuildSearchType_Guild_Add_Member, ///工会移除成员 GuildSearchType_Guild_Remove_Member, + ///家族设置超级管理员 + GuildSearchType_Clan_Add_Super_Admin, }; @protocol XPMineGuildSearchViewControllerDelegate @@ -22,6 +24,8 @@ typedef NS_ENUM(NSInteger, GuildSearchType) { - (void)xPMineGuildSearchViewController:(XPMineGuildSearchViewController *)viewController chooseUserInfo:(ClanMemberInfoModel *)memberInfo; ///邀请用户加入工会 - (void)xPMineGuildSearchViewController:(XPMineGuildSearchViewController *)viewController inviteUserInfo:(GuildSearchUserInfoModel *)userInfo; +///邀请用户成为管理员 +- (void)xPMineGuildSearchViewController:(XPMineGuildSearchViewController *)viewController superAdminInfo:(GuildSearchSuperAdminModel *)superAdminInfo; @end @interface XPMineGuildSearchViewController : MvpViewController @@ -29,7 +33,6 @@ typedef NS_ENUM(NSInteger, GuildSearchType) { @property (nonatomic,weak) id delegate; ///族长的uid @property (nonatomic,copy) NSString *clanOwnerUid; - ///搜索的类型 @property (nonatomic,assign) GuildSearchType searchType; diff --git a/xplan-ios/Main/Mine/View/Guild/View/XPMineGuildSearchViewController.m b/xplan-ios/Main/Mine/View/Guild/View/XPMineGuildSearchViewController.m index 2f6f1c31..d3dffe77 100644 --- a/xplan-ios/Main/Mine/View/Guild/View/XPMineGuildSearchViewController.m +++ b/xplan-ios/Main/Mine/View/Guild/View/XPMineGuildSearchViewController.m @@ -10,20 +10,25 @@ #import ///Tool #import "XPMacro.h" +#import "ThemeColor.h" +#import "TTPopup.h" ///Model #import "ClanMemberDetailInfoModel.h" #import "GuildSearchUserInfoModel.h" +#import "GuildSearchSuperAdminModel.h" ///View #import "XPGuildSearchNavView.h" #import "XPClanMemberTableViewCell.h" #import "XPMineGuildEmptyTableViewCell.h" #import "XPMineGuildSearchMemberTableViewCell.h" +#import "XPGuildSearchSuperAdminTableViewCell.h" #import "XPMineUserInfoViewController.h" +#import "XPMineGuildChooseManagerViewController.h" ///P #import "XPGuildSearchPresenter.h" #import "XPGuildSearchProtocol.h" -@interface XPMineGuildSearchViewController () +@interface XPMineGuildSearchViewController () ///导航栏 @property (nonatomic,strong) XPGuildSearchNavView *navView; ///列表 @@ -75,6 +80,8 @@ return 66; } else if(self.searchType == GuildSearchType_Guild_Add_Member) { return 70; + } else if(self.searchType == GuildSearchType_Clan_Add_Super_Admin) { + return 70; } return 0; } @@ -112,6 +119,15 @@ GuildSearchUserInfoModel * userInfo = [self.datasource objectAtIndex:indexPath.row]; cell.userInfo = userInfo; return cell; + } else if(self.searchType == GuildSearchType_Clan_Add_Super_Admin) { + XPGuildSearchSuperAdminTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPGuildSearchSuperAdminTableViewCell class])]; + if (cell == nil) { + cell = [[XPGuildSearchSuperAdminTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPGuildSearchSuperAdminTableViewCell class])]; + } + cell.delegate = self; + GuildSearchSuperAdminModel * userInfo = [self.datasource objectAtIndex:indexPath.row]; + cell.userInfo = userInfo; + return cell; } } XPMineGuildEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineGuildEmptyTableViewCell class])]; @@ -183,11 +199,42 @@ break; case GuildSearchType_Guild_Add_Member: [self.presenter guildAddMemberSearch:key]; + break; + case GuildSearchType_Clan_Add_Super_Admin: + [self.presenter searchGuildSuperAdmin:key]; + break; default: break; } } +#pragma mark - XPGuildSearchSuperAdminTableViewCellDelegate +- (void)xPGuildSearchSuperAdminTableViewCell:(XPGuildSearchSuperAdminTableViewCell *)cell didSelectInfo:(GuildSearchSuperAdminModel *)userInfo { + if (userInfo && !userInfo.hasSet) { + NSString * message = [NSString stringWithFormat:@"确定要添加用户%@(大鹅ID:%@)为公会超级管理员吗?", userInfo.nick, userInfo.erbanNo]; + TTAlertConfig * config =[[TTAlertConfig alloc] init]; + config.message = message; + + TTAlertMessageAttributedConfig * nickAttribute = [[TTAlertMessageAttributedConfig alloc] init]; + nickAttribute.text = userInfo.nick; + nickAttribute.color = [ThemeColor appMainColor]; + + TTAlertMessageAttributedConfig * idAttribute = [[TTAlertMessageAttributedConfig alloc] init]; + idAttribute.text = userInfo.erbanNo; + idAttribute.color = [ThemeColor appMainColor]; + config.messageAttributedConfig = @[nickAttribute, idAttribute]; + [TTPopup alertWithConfig:config confirmHandler:^{ + XPMineGuildChooseManagerViewController * managerRoomVC = [[XPMineGuildChooseManagerViewController alloc] init]; + managerRoomVC.clanId = self.clanOwnerUid; + managerRoomVC.targetUid = userInfo.uid; + [(UINavigationController *)self.presentingViewController pushViewController:managerRoomVC animated:YES]; + [self dismissViewControllerAnimated:YES completion:nil]; + } cancelHandler:^{ + + }]; + } +} + #pragma mark - XPGuildSearchProtocol - (void)searchClanMemberListSuccess:(NSArray *)memberList { self.datasource = memberList; @@ -199,7 +246,24 @@ [self.tableView reloadData]; } +- (void)searchGuildSuperAdminSuccess:(NSArray *)memberList { + self.datasource = memberList; + [self.tableView reloadData]; +} + #pragma mark - Getters And Setters +- (void)setSearchType:(GuildSearchType)searchType { + _searchType = searchType; + switch (_searchType) { + case GuildSearchType_Clan_Add_Super_Admin: + self.navView.placeHolder = @"请输入公会成员大鹅号"; + break; + + default: + break; + } +} + - (UITableView *)tableView { if (!_tableView) { _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; @@ -213,6 +277,7 @@ } [_tableView registerClass:[XPClanMemberTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPClanMemberTableViewCell class])]; [_tableView registerClass:[XPMineGuildSearchMemberTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineGuildSearchMemberTableViewCell class])]; + [_tableView registerClass:[XPGuildSearchSuperAdminTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPGuildSearchSuperAdminTableViewCell class])]; } return _tableView; } diff --git a/xplan-ios/Main/Mine/View/Guild/View/XPMineGuildViewController.m b/xplan-ios/Main/Mine/View/Guild/View/XPMineGuildViewController.m index da6be599..4cabf4e2 100644 --- a/xplan-ios/Main/Mine/View/Guild/View/XPMineGuildViewController.m +++ b/xplan-ios/Main/Mine/View/Guild/View/XPMineGuildViewController.m @@ -29,6 +29,7 @@ #import "XPMineMangerListViewController.h" #import "XPMineGuildIncomeStatisViewController.h" #import "XPMineHallAnchorIncomeStatisViewController.h" +#import "XPMineUserInfoViewController.h" ///P #import "XPGuildPresenter.h" #import "XPGuildProtocol.h" @@ -313,6 +314,16 @@ return [[UIView alloc]init]; } +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + ClanMemberInfoModel * memberInfo = [self.datasource objectAtIndex:indexPath.row]; + XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init]; + userInfoVC.uid = memberInfo.uid.integerValue; + [self.navigationController pushViewController:userInfoVC animated:YES]; + } +} + #pragma mark - XPMineGuildSearchViewControllerDelegate - (void)xPMineGuildSearchViewController:(XPMineGuildSearchViewController *)viewController inviteUserInfo:(GuildSearchUserInfoModel *)userInfo { if (userInfo && userInfo.uid.length > 0) { @@ -456,6 +467,11 @@ } } +- (void)didTapRecognizer { + XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init]; + userInfoVC.uid = self.clanDetailInfo.hall.ownerUid.integerValue; + [self.navigationController pushViewController:userInfoVC animated:YES]; +} #pragma mark - Getters And Setters - (UIView *)navView { @@ -535,6 +551,9 @@ _avatarImageView = [[NetImageView alloc] initWithConfig:config]; _avatarImageView.layer.masksToBounds = YES; _avatarImageView.layer.cornerRadius = 70/2; + _avatarImageView.userInteractionEnabled = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapRecognizer)]; + [_avatarImageView addGestureRecognizer:tap]; } return _avatarImageView; } @@ -556,6 +575,7 @@ _backImageView = [[NetImageView alloc] initWithConfig:config]; _backImageView.contentMode = UIViewContentModeScaleAspectFill; _backImageView.layer.masksToBounds = YES; + _backImageView.userInteractionEnabled = YES; } return _backImageView; } diff --git a/xplan-ios/Main/Mine/View/XPMineViewController.m b/xplan-ios/Main/Mine/View/XPMineViewController.m index e8e51f98..1e045658 100644 --- a/xplan-ios/Main/Mine/View/XPMineViewController.m +++ b/xplan-ios/Main/Mine/View/XPMineViewController.m @@ -21,6 +21,7 @@ #import "XPMineItemModel.h" #import "UserInfoModel.h" #import "XPMineVisitorUnReadModel.h" +#import "ClanDetailInfoModel.h" ///P #import "XPMineProtocol.h" #import "XPMinePresent.h" @@ -46,6 +47,7 @@ #import "XPMineVisitorViewController.h" #import "XPMineFansTeamViewController.h" #import "XPMineClanViewController.h" +#import "XPMineGuildViewController.h" @interface XPMineViewController () @@ -54,7 +56,7 @@ @property (nonatomic,strong) UITableView *tableView; ///数据源 -@property (nonatomic,strong) NSArray *datasource; +@property (nonatomic,strong) NSMutableArray *datasource; ///赛事模块的 @property (nonatomic,strong) NSArray *matchItemArray; ///卡片item @@ -63,11 +65,14 @@ @property (nonatomic,strong) XPMineHeadView *headView; ///设置 @property (nonatomic,strong) UIButton *settingButton; -/// +///用户信息 @property (nonatomic,strong) UserInfoModel *userInfo; @property (nonatomic, strong) XPMineSkillTipView *skillTipView; - +///家族信息 +@property (nonatomic,strong) ClanDetailInfoModel *clanInfo; +///我的公会 +@property (nonatomic,strong) XPMineItemModel *guildItemModel; @end @implementation XPMineViewController @@ -102,6 +107,7 @@ - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.presenter getUserInfo]; + [self.presenter getClanDetailInfo]; } #pragma mark - Response @@ -272,9 +278,17 @@ break; case XPMineItemType_My_Guild: { - XPMineClanViewController * clanVC = [[XPMineClanViewController alloc] init]; - clanVC.uid = [NSString stringWithFormat:@"%ld", self.userInfo.uid]; - [self.navigationController pushViewController:clanVC animated:YES]; + if (self.clanInfo.clan.elderUid.length > 0) { + XPMineClanViewController * clanVC = [[XPMineClanViewController alloc] init]; + clanVC.uid = [NSString stringWithFormat:@"%ld", self.userInfo.uid]; + [self.navigationController pushViewController:clanVC animated:YES]; + } else if(self.clanInfo.hall.hallId.length > 0) { + XPMineGuildViewController * guildVC = [[XPMineGuildViewController alloc] init]; + guildVC.ownerUid = self.clanInfo.hall.ownerUid; + guildVC.guildId = self.clanInfo.hall.hallId; + [self.navigationController pushViewController:guildVC animated:YES]; + } + } break; default: @@ -380,7 +394,8 @@ #pragma mark - XPMineProtocol - (void)onGetNormalItemsSuccess:(NSArray *)normalItems { - self.datasource = normalItems; + [self.datasource removeAllObjects]; + [self.datasource addObjectsFromArray:normalItems]; [self.tableView reloadData]; } @@ -395,6 +410,20 @@ [self.tableView reloadData]; } +- (void)onGetClanDetailInfoSuccess:(ClanDetailInfoModel *)clanInfo { + self.clanInfo = clanInfo; + if (self.clanInfo.clan.elderUid.length > 0 || self.clanInfo.hall.hallId) { + if (![self.datasource containsObject:self.guildItemModel]) { + [self.datasource insertObject:self.guildItemModel atIndex:3]; + } + } else { + if ([self.datasource containsObject:self.guildItemModel]) { + [self.datasource removeObject:self.guildItemModel]; + } + } + [self.tableView reloadData]; +} + #pragma mark - XPMineHeadItemTableViewCellDelegate - (void)xPMineHeadItemTableViewCell:(XPMineHeadItemTableViewCell *)cell didSelectItem:(XPMineItemModel *)item { [self pushViewControllerWithType:item.type]; @@ -468,4 +497,22 @@ return _skillTipView; } +- (XPMineItemModel *)guildItemModel { + if (!_guildItemModel) { + XPMineItemModel * guildItem = [[XPMineItemModel alloc] init]; + guildItem.itemName = @"我的工会"; + guildItem.itemImageName = @"mine_normal_my_guild"; + guildItem.type = XPMineItemType_My_Guild; + _guildItemModel = guildItem; + } + return _guildItemModel; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + @end