个人信息修改

This commit is contained in:
lianxiang
2018-09-18 20:13:59 +08:00
parent 2c81fa6c7d
commit 27e27d5d12
42 changed files with 981 additions and 54 deletions
@@ -246,6 +246,7 @@
@"code":notification.object[@"code"],
@"grant_type":@"authorization_code"
};
[WeiIXinApiManager weixinAccessTokeRequstUrl:@"https://api.weixin.qq.com/sns/oauth2/access_token" parameters:param success:^(id response) {
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingAllowFragments error:nil];
GILog(@"access_token back -->%@",dict);
@@ -502,6 +502,7 @@
NC_ADD_TARGET_NAME_OBJECT(self, @selector(pushToAppAdDetailView),APP_PUSHTO_DETAILVIEW, nil) ;
NC_ADD_TARGET_NAME_OBJECT(self, @selector(userLoginNotify), kUserLoginSuccessNoti, nil);
NC_ADD_TARGET_NAME_OBJECT(self, @selector(userlogOutNotify), kUserLogOutNotify, nil);
NC_ADD_TARGET_NAME_OBJECT(self, @selector(userAvatorUpDate), kUserAvatorUpdateNoti, nil) ;
}
#pragma mark 广告详情
@@ -530,6 +531,9 @@
NC_REMOVE_NAME(self, USER_GUARD_DISSMISS, nil);
NC_REMOVE_NAME(self, APP_GUARD_DISSMISS, nil);
NC_REMOVE_NAME(self, APP_PUSHTO_DETAILVIEW, nil);
NC_REMOVE_NAME(self, kUserAvatorUpdateNoti, nil);
NC_REMOVE_NAME(self, kUserLogOutNotify, nil);
NC_REMOVE_NAME(self, kUserLoginSuccessNoti, nil);
}
#pragma mark 新手引导
@@ -671,4 +675,13 @@
}
#pragma mark -用户头像更新
-(void)userAvatorUpDate{
GiGaUser *user = [[GiGaUserManager shareUser] getCurrentUser];
if (user.headImgUrl && ![user.headImgUrl isKindOfClass:[NSNull class]] ) {
[self refreshUserIcon:user.headImgUrl];
}
}
@end
@@ -0,0 +1,13 @@
//
// AppVerionDescriptionVC.h
// GIGA
//
// Created by lianxiang on 2018/9/18.
// Copyright © 2018年 com.giga.ios. All rights reserved.
//
#import "GiGaBaseViewController.h"
@interface AppVerionDescriptionVC : GiGaBaseViewController
@end
@@ -0,0 +1,133 @@
//
// AppVerionDescriptionVC.m
// GIGA
//
// Created by lianxiang on 2018/9/18.
// Copyright © 2018年 com.giga.ios. All rights reserved.
//
#import "AppVerionDescriptionVC.h"
#import "AppVersionDescCell.h"
#import "GiGaBaseAPiRequest.h"
#import "VersionModel.h"
#import "AppVersionLogoCell.h"
@interface AppVerionDescriptionVC ()
@property (nonatomic,strong) NSMutableArray *versionsArr;
@property (nonatomic) int currntPage ;
@property (nonatomic) int totalPage ;
@end
@implementation AppVerionDescriptionVC
- (void)viewDidLoad {
[super viewDidLoad];
_currntPage = 1;
_totalPage = 1;
self.versionsArr = [[NSMutableArray alloc] init];
[self.view addSubview:self.tableView];
self.tableView.delegate = self;
self.tableView.dataSource = self;
self.tableView.backgroundColor = [UIColor whiteColor];
self.tableView.separatorStyle = UITableViewCellSelectionStyleNone;
self.tableView.sectionFooterHeight = 0;
self.tableView.estimatedSectionFooterHeight= 0;
self.tableView.estimatedSectionHeaderHeight = 0;
self.tableView.frame = CGRectMake(0, 1, KMainW, self.view.bounds.size.height - SAFE_NAV_HEIGHT);
[self requstListDatas];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1 + self.versionsArr.count;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return 1;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.section == 0) {
AppVersionLogoCell *cell = [tableView dequeueReusableCellWithIdentifier:@"AppVersionLogoCell"];
if(!cell){
cell = [[[NSBundle mainBundle] loadNibNamed:@"AppVersionLogoCell" owner:self options:nil] lastObject];
}
return cell;
}
AppVersionDescCell *cell = [tableView dequeueReusableCellWithIdentifier:@"AppVersionDescCell"];
if(!cell){
cell = [[[NSBundle mainBundle] loadNibNamed:@"AppVersionDescCell" owner:self options:nil] lastObject];
}
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.section == 0) {
return 173.f;
}else{
return 92 + 25 * self.versionsArr.count;
}
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return 0.1;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
if (section == 0){
return 0.1;
}else if (section == 1){
return 12;
}
return 4;
}
-(void)requstListDatas{
GiGaBaseAPiRequest *reuqest = [GiGaBaseAPiRequest initWithRequestPath:kAPiAPPVersion method:RequestPostMethod parms:@{}];
[reuqest requstDataWithResult:^(GiGaAPIResult *result) {
if (result.success) {
GILog(@"%@",result.dic);
self->_currntPage = [result.dic[@"currPage"] intValue];
self->_totalPage = [result.dic[@"totalPage"] intValue];
NSDictionary *pagedic = result.dic[@"page"];
NSArray *listArr = pagedic[@"list"];
for (NSDictionary *dic in listArr) {
VersionModel *model = [[VersionModel alloc] initWithDictionary:dic error:nil];
[self.versionsArr addObject:model];
}
[self.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
@@ -15,6 +15,7 @@
#import "UINavigationBar+Custom.h"
#import "GiGaBaseAPiRequest.h"
#import "GiGaUserManager.h"
#import "UIImageView+WebCache.h"
@interface GiGaMeViewController ()
@property (nonatomic,strong) GiGaUser *user;
@@ -39,6 +40,21 @@
self.tableView.bounces = NO;
self.tableView.frame = CGRectMake(0, 1, KMainW, self.view.bounds.size.height - SAFE_NAV_HEIGHT);
[self loadUserInfo];
NC_ADD_TARGET_NAME_OBJECT(self, @selector(userAvatorUpDate), kUserAvatorUpdateNoti, nil) ;
}
-(void)dealloc{
NC_REMOVE_NAME(self, kUserAvatorUpdateNoti, nil);
}
-(void)userAvatorUpDate{
GiGaUser *user = [[GiGaUserManager shareUser] getCurrentUser];
if (user.headImgUrl && ![user.headImgUrl isKindOfClass:[NSNull class]] ) {
GiGaMineUserViewCell *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
NSURL *url = [NSURL URLWithString:user.headImgUrl];
[cell.userAvator sd_setImageWithURL:url];
}
}
@@ -18,8 +18,14 @@
#import "JYAddressPicker.h"
#import "GiGaBaseAPiRequest.h"
#import "GiGaUserJobViewCell.h"
#import <AVFoundation/AVFoundation.h>
#import "GIGaFileManager.h"
#import "GiGaUserDefault.h"
#import "GiGaNetManager.h"
#import "GiGaServerConfig.h"
#import "GiGaAPIResult.h"
@interface GiGaUserViewController ()<LYSDatePickerSelectDelegate>
@interface GiGaUserViewController ()<LYSDatePickerSelectDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate>
@property (nonatomic,strong) GiGaUser *user;
@property (nonatomic,strong) NSMutableArray *jobArr;
@property (nonatomic) BOOL jobSpread;
@@ -69,7 +75,6 @@
self.tableView.bounces = YES;
self.tableView.frame = CGRectMake(0, 1, KMainW,self.view.bounds.size.height - SAFE_NAV_HEIGHT);
[self.tableView registerClass: [GiGaUserJobViewCell class] forCellReuseIdentifier:@"GiGaUserJobViewCell"];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
@@ -95,21 +100,25 @@
GIGaUserInfoAvatorCell *cell = [tableView dequeueReusableCellWithIdentifier:@"GIGaUserInfoAvatorCell"];
if(!cell){
cell = [[[NSBundle mainBundle] loadNibNamed:@"GIGaUserInfoAvatorCell" owner:self options:nil] lastObject];
UITapGestureRecognizer *tapGestrue = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(userAvatorClick)];
[cell.userAvator addGestureRecognizer:tapGestrue];
}
[cell loadCellData:indexPath user:self.user];
return cell;
}else if (indexPath.section == 1 && indexPath.row < 2){
}else if (indexPath.section == 1 && indexPath.row ==0){
GIGaUserIDViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"GIGaUserIDViewCell"];
if(!cell){
cell = [[[NSBundle mainBundle] loadNibNamed:@"GIGaUserIDViewCell" owner:self options:nil] lastObject];
}
[cell loadCellData:indexPath user: self.user];
[cell loadCellData:indexPath user: self.user];
return cell;
}else if (indexPath.section == 1 && indexPath.row == 2){
}else if (indexPath.section == 1 && indexPath.row <= 2){
GIGaUserWeChatViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"GIGaUserWeChatViewCell"];
if(!cell){
cell = [[[NSBundle mainBundle] loadNibNamed:@"GIGaUserWeChatViewCell" owner:self options:nil] lastObject];
@@ -139,6 +148,7 @@
cell = [[[NSBundle mainBundle] loadNibNamed:@"GIGaUserCityViewCell" owner:self options:nil] lastObject];
}
[cell loadCellData:indexPath user:self.user];
return cell;
}else if (indexPath.section == 3){
static NSString *cellID = @"GiGaUserJobViewCell";
@@ -148,13 +158,10 @@
}
[cell userSelectjobAction:^() {
self.jobSpread = !self.jobSpread;
[tableView reloadSections:[NSIndexSet indexSetWithIndex:3] withRowAnimation:UITableViewRowAnimationNone];
}];
[cell setButtnImage:self.jobSpread with:self.jobArr];
[cell userSelectjob:^(NSString *title) {
self.user.occupationCode = title;
[tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:3 inSection:2]] withRowAnimation:UITableViewRowAnimationNone];
@@ -162,7 +169,6 @@
return cell;
}
return nil;
}
@@ -182,19 +188,49 @@
}];
}else if (indexPath.section == 2 && indexPath.row == 2){
JYAddressPicker *addressPicker = [JYAddressPicker jy_showAt:self];
NSMutableArray *defalutvaluses = [NSMutableArray new];
if (self.user.provinceId && ![self.user.provinceId isKindOfClass:[NSNull class]]) {
[defalutvaluses addObject:self.user.provinceId];
}else{
[defalutvaluses addObject:@""];
}
if (self.user.cityId && ![self.user.cityId isKindOfClass:[NSNull class]]) {
[defalutvaluses addObject:self.user.cityId];
}else{
[defalutvaluses addObject:@""];
}
if (self.user.areaId && ![self.user.areaId isKindOfClass:[NSNull class]]) {
[defalutvaluses addObject:self.user.areaId];
}else{
[defalutvaluses addObject:@""];
}
JYAddressPicker *addressPicker = [JYAddressPicker jy_showAt:self defaultShow:defalutvaluses];
//JYAddressPicker *addressPicker = [JYAddressPicker jy_showAt:self];
weakify(self);
addressPicker.selectedItemBlock = ^(NSArray *addressArr) {
NSString *province = [addressArr objectAtIndex:0][@"name"];
NSString *provinceID = [addressArr objectAtIndex:0][@"id"];
NSString *city = [addressArr objectAtIndex:1][@"name"];
NSString *cityID = [addressArr objectAtIndex:1][@"id"];
NSString *county = [addressArr objectAtIndex:2][@"name"];
NSString *countyID = [addressArr objectAtIndex:2][@"id"];
NSString *addres = [NSString stringWithFormat:@"%@%@%@",province,city,county];
GILog(@"%@",addres);
GIGaUserCityViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
weakSelf.user.provinceName = province;
weakSelf.user.provinceId = provinceID;
weakSelf.user.cityName = city;
weakSelf.user.cityId = cityID;
weakSelf.user.areaName = county;
weakSelf.user.areaId = countyID;
[cell loadCellData:indexPath user:self.user];
};
@@ -249,10 +285,24 @@
#pragma mark - 保存用户信息
-(void)saveUserInfo{
GIGaUserWeChatViewCell *nickcell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:1]];
self.user.nickName = nickcell.weiXinCount.text;
GIGaUserWeChatViewCell *chatcell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:2 inSection:1]];
self.user.weixin = chatcell.weiXinCount.text;
if (!self.user.nickName || [self.user.nickName isKindOfClass:[NSNull class]]) {
self.user.nickName = @"";
}
int leng = [GiGaHelper convertToInt: self.user.nickName];
if ( leng >40 ) {
GIGA_ShowToast(@"用户名1-40字符长度")
return;
}
if (!self.user.weixin || [self.user.weixin isKindOfClass:[NSNull class]]) {
self.user.weixin = @"";
}
@@ -264,10 +314,21 @@
self.user.occupationCode = @"";
}
if (!self.user.provinceId|| [self.user.provinceId isKindOfClass:[NSNull class]]) {
self.user.provinceId = @"";
}
if (!self.user.cityId|| [self.user.cityId isKindOfClass:[NSNull class]]) {
self.user.cityId = @"";
}
if (!self.user.areaId|| [self.user.areaId isKindOfClass:[NSNull class]]) {
self.user.areaId = @"";
}
[self.view makeToastActivity:CSToastPositionCenter];
NSDictionary *param = @{
@"provinceId":@"1_11",
@"cityId":@"1_11",
@"areaId":@"1_11_8",
@"provinceId":self.user.provinceId,
@"cityId":self.user.cityId,
@"areaId":self.user.areaId,
@"nickName":self.user.nickName,
@"weixin":self.user.weixin,
@"sexCode":[NSString stringWithFormat:@"%d",self.user.sexCode],
@@ -278,13 +339,19 @@
GiGaBaseAPiRequest *api =[GiGaBaseAPiRequest initWithRequestPath:kFixUserInfo method:RequestPostMethod parms:param];
[api requstDataWithResult:^(GiGaAPIResult *result) {
[self.view hideToastActivity];
if (result.success) {
GIGA_ShowToast(@"修改成功");
[[GiGaUserManager shareUser] saveUser:self.user];
}else{
GIGA_ShowToast(result.dic[@"msg"]);
if (result.code == 401) {
//token失效
[GiGaBaseAPiRequest userTokenTimeOutGologinFromVC:self];
}
}
}];
}
#pragma mark - 获取职业数据
@@ -293,21 +360,158 @@
GiGaBaseAPiRequest *api =[GiGaBaseAPiRequest initWithRequestPath:kApiOccuption method:RequestPostMethod parms:param];
[api requstDataWithResult:^(GiGaAPIResult *result) {
if (result.success) {
GILog(@"%@",result.dic);
// GILog(@"%@",result.dic);
NSDictionary *dic = result.dic;
NSArray *josA = dic[@"list"];
for (NSDictionary *jobDic in josA ) {
[self.jobArr addObject:jobDic[@"dictLabel"]];
}
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:3] withRowAnimation:UITableViewRowAnimationNone];
}else{
NSString *msg = result.dic[@"msg"];
GIGA_ShowToast(msg);
}
}];
}
#pragma mark - 用户头像点击
-(void)userAvatorClick{
[self showCameraAndPhotoAlert];
}
-(void)showCameraAndPhotoAlert{
UIAlertController *alertSheet = [UIAlertController alertControllerWithTitle:@"选择头像" message:nil preferredStyle:UIAlertControllerStyleActionSheet]; UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; imagePickerController.delegate = self; imagePickerController.allowsEditing = YES;
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
UIAlertAction *cameraAction = [UIAlertAction actionWithTitle:@"拍照" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
//权限判断应用是否有使用相机的权限
NSString *mediaType = AVMediaTypeVideo;//读取媒体类型
AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];//读取设备授权状态
if(authStatus == AVAuthorizationStatusRestricted || authStatus == AVAuthorizationStatusDenied){
NSString *errorStr = @"应用相机权限受限,请在设置中启用";
[self jxt_showAlertWithTitle:@"" message:errorStr appearanceProcess:^(JXTAlertController * _Nonnull alertMaker) {
alertMaker.addActionCancelTitle(@"取消");
alertMaker.addActionDefaultTitle(@"去开启");
} actionsBlock:^(NSInteger buttonIndex, UIAlertAction * _Nonnull action, JXTAlertController * _Nonnull alertSelf) {
if (buttonIndex == 1) {
NSString *urlStr = @"App-Prefs:root=Photos";
if (@available(iOS 10.0, *)) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlStr] options:@{} completionHandler:nil];
} else {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlStr]];
// Fallback on earlier versions
}
}
}];
return;
}
// 设置数据源
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:imagePickerController animated:YES completion:nil]; }];
[alertSheet addAction:cameraAction];
}
//相册
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
//权限
UIAlertAction *photoAction = [UIAlertAction actionWithTitle:@"从手机相册选择" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentViewController:imagePickerController animated:YES completion:nil];
}];
[alertSheet addAction:photoAction];
}else{
NSString *errorStr = @"应用相权册限受限,请在设置中启用";
[self jxt_showAlertWithTitle:@"" message:errorStr appearanceProcess:^(JXTAlertController * _Nonnull alertMaker) {
alertMaker.addActionCancelTitle(@"取消");
alertMaker.addActionDefaultTitle(@"去开启");
} actionsBlock:^(NSInteger buttonIndex, UIAlertAction * _Nonnull action, JXTAlertController * _Nonnull alertSelf) {
if (buttonIndex == 1) {
NSURL *url = [NSURL URLWithString:@"prefs:root=Photos"];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
}
}];
}
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];
[alertSheet addAction:cancelAction];
[self presentViewController:alertSheet animated:YES completion:nil];
}
-(void)camreaAction{
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
{
GILog(@"info:%@",info);
[picker dismissViewControllerAnimated:YES completion:nil]
;
UIImage*img=[info objectForKey:UIImagePickerControllerEditedImage];
UIImage *samall = [GIGaFileManager thumbnailWithImageWithoutScale:img size:CGSizeMake(300, 300)];
NSString *userid = [GiGaUserDefault getCurentUserId];
[GIGaFileManager savaUserAvatorWith:userid image:samall];
GIGaUserInfoAvatorCell *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
cell.userAvator.image = samall;
[self uploadImage:samall];
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
[picker dismissViewControllerAnimated:YES completion:nil];
}
#pragma mark upload image
-(void)uploadImage:(UIImage *)image{
[self.view makeToastActivity:CSToastPositionCenter];
NSString *url = [NSString stringWithFormat:@"%@%@",[GiGaServerConfig getMainUrl],kUploadAvator];
//NSString *userID = [GiGaUserDefault getCurentUserId];
//UIImage *avator =[GIGaFileManager getUserAvatorWith:userID];
NSData*imageData=UIImageJPEGRepresentation(image,1.0f);
[GiGaNetManager uploadImage:url imgData:imageData parms:@{@"file":@"file"} responseBlock:^(NSDictionary *responseDict, NSDictionary *responseHeaderFields, NSError *error) {
[self.view hideToastActivity];
GiGaAPIResult *reullt = [[GiGaAPIResult alloc] initWithDictionary:responseDict];
if (error) {
GILog(@"eror:%@",error.localizedDescription);
return ;
}
if (reullt.success) {
GiGaUser *user = [[GiGaUserManager shareUser] getCurrentUser];
NSString *newurl = responseDict[@"url"];
self.user.headImgUrl = newurl;
if (newurl) {
user.headImgUrl = newurl;
}
[[GiGaUserManager shareUser] saveUser:user];
NC_POST_NAME_OBJECT(kUserAvatorUpdateNoti, nil);
GIGA_ShowToast(@"👮‍♀️修改成功")
}else{
GIGA_ShowToast(reullt.message);
}
}];
}
@end
+24 -3
View File
@@ -11,6 +11,7 @@
#import "JXTAlertController.h"
#import "GiGaUserDefault.h"
#import "GiGaUserManager.h"
#import "AppVerionDescriptionVC.h"
@interface GiSysSettingsVC ()
@@ -56,12 +57,32 @@
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
if (indexPath.row == 0) {
[self jxt_showAlertWithTitle:@"提示" message:@"确定清楚缓存?" appearanceProcess:^(JXTAlertController * _Nonnull alertMaker) {
alertMaker.addActionCancelTitle(@"取消");
alertMaker.addActionDefaultTitle(@"确定");
} actionsBlock:^(NSInteger buttonIndex, UIAlertAction * _Nonnull action, JXTAlertController * _Nonnull alertSelf) {
if (buttonIndex == 1) {
GiGaSettingsViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.cachLabe.text = @"0M";
}
}];
}else if (indexPath.row == 1){
}else if (indexPath.row == 2){
}else if (indexPath.row == 3){
AppVerionDescriptionVC *verVC =[[AppVerionDescriptionVC alloc] init];
[self.navigationController pushViewController:verVC animated:YES];
}
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 54;
return 44;
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
@@ -120,7 +141,7 @@
}
}];
}
//http://yts.s1.natapp.cc/mask/clearZear.html
-(void)userlogOut{
[[GiGaUserManager shareUser] loginOut];
+17
View File
@@ -0,0 +1,17 @@
//
// VersionModel.h
// GIGA
//
// Created by lianxiang on 2018/9/18.
// Copyright © 2018年 com.giga.ios. All rights reserved.
//
#import <JSONModel/JSONModel.h>
@interface VersionModel : JSONModel
@property (nonatomic,copy) NSString *content;
@property (nonatomic,copy) NSString *createTime;
@property (nonatomic,copy) NSString *ver_id;
@property (nonatomic,copy) NSString *title;
@property (nonatomic,copy) NSString *type;
@end
+21
View File
@@ -0,0 +1,21 @@
//
// VersionModel.m
// GIGA
//
// Created by lianxiang on 2018/9/18.
// Copyright © 2018年 com.giga.ios. All rights reserved.
//
#import "VersionModel.h"
@implementation VersionModel
+(JSONKeyMapper *)keyMapper{
return [[JSONKeyMapper alloc] initWithModelToJSONDictionary:@{@"ver_id":@"id"}];
}
+ (BOOL)propertyIsOptional:(NSString *)propertyName{
return YES;
}
@end
@@ -0,0 +1,14 @@
//
// AppVersionDescCell.h
// GIGA
//
// Created by lianxiang on 2018/9/18.
// Copyright © 2018年 com.giga.ios. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface AppVersionDescCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UILabel *VersionDescLabel;
@end
@@ -0,0 +1,26 @@
//
// AppVersionDescCell.m
// GIGA
//
// Created by lianxiang on 2018/9/18.
// Copyright © 2018年 com.giga.ios. All rights reserved.
//
#import "AppVersionDescCell.h"
@implementation AppVersionDescCell
- (void)awakeFromNib {
[super awakeFromNib];
// Initialization code
//self.VersionDescLabel.text = @"1.版本有优化\n2.版本有优化\n3.版本有优化\n4.版本有优化\n5.版本有优化\n";
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
@end
@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14113" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<tableViewCell contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="AppVersionDescCell" id="KGk-i7-Jjw" customClass="AppVersionDescCell">
<rect key="frame" x="0.0" y="0.0" width="375" height="92"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
<rect key="frame" x="0.0" y="0.0" width="375" height="91.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="JXV-Zf-Ztb">
<rect key="frame" x="0.0" y="40" width="375" height="1"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="hWH-rb-No5"/>
</constraints>
</view>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1.版本优化" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="v31-x8-IlY">
<rect key="frame" x="7" y="56" width="361" height="18.5"/>
<fontDescription key="fontDescription" name="PingFangSC-Medium" family="PingFang SC" pointSize="13"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstItem="v31-x8-IlY" firstAttribute="top" secondItem="JXV-Zf-Ztb" secondAttribute="bottom" constant="15" id="26g-Zf-2QA"/>
<constraint firstAttribute="trailing" secondItem="v31-x8-IlY" secondAttribute="trailing" constant="7" id="Ama-ed-0mY"/>
<constraint firstItem="v31-x8-IlY" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="7" id="Fax-Sh-1aI"/>
<constraint firstAttribute="trailing" secondItem="JXV-Zf-Ztb" secondAttribute="trailing" id="e2a-v1-3mo"/>
<constraint firstItem="JXV-Zf-Ztb" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="40" id="oxm-rv-lzY"/>
<constraint firstItem="JXV-Zf-Ztb" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" id="uZy-ia-fM8"/>
</constraints>
</tableViewCellContentView>
<color key="backgroundColor" red="0.51372549019607838" green="0.039215686274509803" blue="0.039215686274509803" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
<connections>
<outlet property="VersionDescLabel" destination="v31-x8-IlY" id="Rfo-xt-BWD"/>
</connections>
<point key="canvasLocation" x="33.5" y="87"/>
</tableViewCell>
</objects>
</document>
@@ -0,0 +1,13 @@
//
// AppVersionLogoCell.h
// GIGA
//
// Created by lianxiang on 2018/9/18.
// Copyright © 2018年 com.giga.ios. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface AppVersionLogoCell : UITableViewCell
@end
@@ -0,0 +1,24 @@
//
// AppVersionLogoCell.m
// GIGA
//
// Created by lianxiang on 2018/9/18.
// Copyright © 2018年 com.giga.ios. All rights reserved.
//
#import "AppVersionLogoCell.h"
@implementation AppVersionLogoCell
- (void)awakeFromNib {
[super awakeFromNib];
// Initialization code
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
@end
@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14113" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<tableViewCell contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="AppVersionLogoCell" id="KGk-i7-Jjw" customClass="AppVersionLogoCell">
<rect key="frame" x="0.0" y="0.0" width="320" height="173"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
<rect key="frame" x="0.0" y="0.0" width="320" height="172.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_logo" translatesAutoresizingMaskIntoConstraints="NO" id="xDN-Vh-dG1">
<rect key="frame" x="114" y="31" width="93" height="93"/>
<constraints>
<constraint firstAttribute="width" constant="93" id="don-g0-ZBG"/>
<constraint firstAttribute="height" constant="93" id="iL4-WJ-Lpa"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="不断进步 只为遇见更好的你" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Kg8-oY-HjJ">
<rect key="frame" x="73.5" y="141" width="173" height="20"/>
<fontDescription key="fontDescription" name="PingFangSC-Medium" family="PingFang SC" pointSize="14"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstItem="Kg8-oY-HjJ" firstAttribute="centerX" secondItem="H2p-sc-9uM" secondAttribute="centerX" id="0Qg-Sa-TfY"/>
<constraint firstItem="xDN-Vh-dG1" firstAttribute="centerX" secondItem="H2p-sc-9uM" secondAttribute="centerX" id="Nna-4s-ign"/>
<constraint firstItem="Kg8-oY-HjJ" firstAttribute="top" secondItem="xDN-Vh-dG1" secondAttribute="bottom" constant="17" id="No7-P5-8Wm"/>
<constraint firstItem="xDN-Vh-dG1" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="31" id="hPh-Q6-tZd"/>
</constraints>
</tableViewCellContentView>
<color key="backgroundColor" red="0.51372549020000002" green="0.039215686270000001" blue="0.039215686270000001" alpha="1" colorSpace="calibratedRGB"/>
<viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
<point key="canvasLocation" x="34" y="96.5"/>
</tableViewCell>
</objects>
<resources>
<image name="bg_logo" width="88" height="88"/>
</resources>
</document>
@@ -25,6 +25,7 @@
}
-(void)loadUserinfoWith:(GiGaUser *)user{
if (user.headImgUrl && ![user.nickName isKindOfClass:[NSNull class]]) {
+2 -1
View File
@@ -21,7 +21,8 @@
if(indexPath.row == 0){
self.cachLabe.hidden = NO;
int M = arc4random() % 5;
self.cachLabe.text = [NSString stringWithFormat:@"%dM",M];
}
self.descLabel.text = listArr[indexPath.row];
+26 -14
View File
@@ -12,41 +12,50 @@
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<tableViewCell contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="GiGaSettingsViewCell" id="KGk-i7-Jjw" customClass="GiGaSettingsViewCell">
<tableViewCell contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="GiGaSettingsViewCell" id="KGk-i7-Jjw" customClass="GiGaSettingsViewCell">
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
<rect key="frame" x="0.0" y="0.0" width="341" height="43.5"/>
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ndG-YW-sfk">
<rect key="frame" x="26" y="13" width="30" height="18"/>
<fontDescription key="fontDescription" type="system" pointSize="15"/>
<nil key="textColor"/>
<rect key="frame" x="26" y="12.5" width="29" height="20"/>
<fontDescription key="fontDescription" name="PingFangSC-Medium" family="PingFang SC" pointSize="14"/>
<color key="textColor" red="0.21568627450980393" green="0.21568627450980393" blue="0.21568627450980393" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6PS-Ws-JMW">
<rect key="frame" x="0.0" y="42.5" width="375" height="1"/>
<color key="backgroundColor" red="0.94901960780000005" green="0.94901960780000005" blue="0.94901960780000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<rect key="frame" x="26" y="43.5" width="316" height="0.5"/>
<color key="backgroundColor" red="0.87058823529411766" green="0.87058823529411766" blue="0.87058823529411766" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="F3E-xB-4EF"/>
<constraint firstAttribute="height" constant="0.5" id="Ycg-7c-nRg"/>
</constraints>
</view>
<label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="M" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hqP-o2-Ccz">
<rect key="frame" x="265" y="13" width="13" height="18"/>
<fontDescription key="fontDescription" type="system" pointSize="15"/>
<nil key="textColor"/>
<rect key="frame" x="299.5" y="12" width="12.5" height="20"/>
<fontDescription key="fontDescription" name="PingFangSC-Regular" family="PingFang SC" pointSize="14"/>
<color key="textColor" red="0.54117647058823526" green="0.54117647058823526" blue="0.54117647058823526" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_indicator_right" translatesAutoresizingMaskIntoConstraints="NO" id="gzd-rx-I7z">
<rect key="frame" x="343" y="16" width="8.5" height="14"/>
<constraints>
<constraint firstAttribute="height" constant="14" id="QAn-L9-64s"/>
<constraint firstAttribute="width" constant="8.5" id="gga-gq-fBD"/>
</constraints>
</imageView>
</subviews>
<constraints>
<constraint firstItem="6PS-Ws-JMW" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" id="DC4-fn-ot1"/>
<constraint firstAttribute="trailing" secondItem="6PS-Ws-JMW" secondAttribute="trailing" constant="33" id="B2K-iE-76r"/>
<constraint firstItem="ndG-YW-sfk" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="DY1-kd-hRN"/>
<constraint firstAttribute="trailing" secondItem="hqP-o2-Ccz" secondAttribute="trailing" constant="63" id="I7g-q2-S0f"/>
<constraint firstItem="hqP-o2-Ccz" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="Qn4-b5-aLv"/>
<constraint firstAttribute="bottom" secondItem="6PS-Ws-JMW" secondAttribute="bottom" id="moN-rN-YYH"/>
<constraint firstItem="6PS-Ws-JMW" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="26" id="S4S-lR-UOV"/>
<constraint firstAttribute="trailing" secondItem="gzd-rx-I7z" secondAttribute="trailing" constant="23.5" id="izn-sF-YEu"/>
<constraint firstAttribute="bottom" secondItem="6PS-Ws-JMW" secondAttribute="bottom" constant="-0.5" id="sdB-pn-hae"/>
<constraint firstItem="ndG-YW-sfk" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="26" id="vW3-CP-kmW"/>
<constraint firstAttribute="trailing" secondItem="6PS-Ws-JMW" secondAttribute="trailing" constant="-34" id="ylJ-U0-g2N"/>
<constraint firstItem="gzd-rx-I7z" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" constant="1.25" id="xjH-gv-hfO"/>
</constraints>
</tableViewCellContentView>
<viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
@@ -57,4 +66,7 @@
<point key="canvasLocation" x="-5.5" y="43"/>
</tableViewCell>
</objects>
<resources>
<image name="user_indicator_right" width="9" height="14"/>
</resources>
</document>
@@ -42,6 +42,7 @@
}else{
self.detalTitle.text = [NSString stringWithFormat:@"%@%@%@",user.provinceName,user.cityName,user.areaName];
}
}else if (indexPath.section == 2 && indexPath.row == 3){
self.cityLabel.text = @"职业";
if (user.occupationCode && ![user.occupationCode isKindOfClass:[NSNull class]] && ![user.occupationCode isEqualToString:@""]) {
@@ -21,13 +21,6 @@
self.IdLabel.text = user.userId;
self.userTitle.text = @"用户ID";
}else if (indexPath.section == 1 && indexPath.row == 1){
self.userTitle.text = @"昵称";
if (user.nickName && ![user.nickName isKindOfClass:[NSNull class]]) {
self.IdLabel.text = user.nickName;
}else{
self.IdLabel.text = @"昵称";
}
}
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
@@ -11,4 +11,5 @@
@interface GIGaUserInfoAvatorCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UIImageView *userAvator;
-(void)loadCellData:(NSIndexPath*)indexPath user:(GiGaUser*)user;
@end
@@ -19,7 +19,7 @@
<rect key="frame" x="0.0" y="0.0" width="375" height="132.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="img_circle_avatar" translatesAutoresizingMaskIntoConstraints="NO" id="L0Q-5Y-jXq">
<imageView contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="img_circle_avatar" translatesAutoresizingMaskIntoConstraints="NO" id="L0Q-5Y-jXq">
<rect key="frame" x="146" y="15" width="82" height="82"/>
<constraints>
<constraint firstAttribute="width" constant="82" id="IAJ-jV-dpt"/>
@@ -9,6 +9,8 @@
#import <UIKit/UIKit.h>
@interface GIGaUserWeChatViewCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UILabel *descTitle;
@property (weak, nonatomic) IBOutlet UITextField *weiXinCount;
-(void)loadCellData:(NSIndexPath*)indexPath user:(GiGaUser*)user;
@end
@@ -17,11 +17,23 @@
}
-(void)loadCellData:(NSIndexPath*)indexPath user:(GiGaUser*)user{
if (user.weixin && ![user.weixin isKindOfClass:[NSNull class]]) {
self.weiXinCount.text = user.weixin;
}
if (indexPath.section == 1 && indexPath.row == 1) {
//昵称
self.descTitle.text = @"昵称";
self.weiXinCount.placeholder = @"请输入用户昵称";
if (user.nickName && ![user.nickName isKindOfClass:[NSNull class]] && ![user.nickName isEqualToString:@""]) {
self.weiXinCount.text= user.nickName;
}
}else if (indexPath.section == 1 && indexPath.row == 2){
//微信
if (user.weixin && ![user.weixin isKindOfClass:[NSNull class]] && ![user.weixin isEqualToString:@""]) {
self.weiXinCount.text = user.weixin;
}
}
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
@@ -20,12 +20,15 @@
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="微信号" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="96G-Rk-4QP">
<rect key="frame" x="29" y="11" width="42" height="20"/>
<rect key="frame" x="29" y="4" width="42" height="34"/>
<constraints>
<constraint firstAttribute="height" constant="34" id="7uO-em-FCR"/>
</constraints>
<fontDescription key="fontDescription" name="PingFangSC-Medium" family="PingFang SC" pointSize="14"/>
<color key="textColor" red="0.21568627450980393" green="0.21568627450980393" blue="0.21568627450980393" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="输入微信号" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="ZiU-cX-tf9">
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="输入微信号" textAlignment="natural" minimumFontSize="13" translatesAutoresizingMaskIntoConstraints="NO" id="ZiU-cX-tf9">
<rect key="frame" x="120" y="4" width="241" height="34"/>
<constraints>
<constraint firstAttribute="height" constant="34" id="EQ6-lD-lta"/>
@@ -45,6 +48,7 @@
</tableViewCellContentView>
<viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
<connections>
<outlet property="descTitle" destination="96G-Rk-4QP" id="Jny-7N-qig"/>
<outlet property="weiXinCount" destination="ZiU-cX-tf9" id="pgd-yd-pSv"/>
</connections>
<point key="canvasLocation" x="-87.5" y="67"/>