会员中心选项添加提示信息

来源:互联网 时间:1970-01-01

又是Mat的IOS开发任务, 这次是会员中心选项的Label显示异常. 适配问题, 上次写的是根据屏幕判断位置, 但这样不是最有效的, 最有效的方式是根据Item的位置放置提示信息. 同时适配iPhone6和iPhone5s.

完成的效果



设置UserCenter600Item类

[code]@interface UserCenter600Item : CYTableItem...@property (nonatomic) BOOL isMember; // 是否会员@property (nonatomic, NI_STRONG) NSString *memberText; // 会员提示信息...- (void) setVipState:(BOOL)isVip; // 设置是否会员- (void) setVipText:(NSString*)text; // 设置会员提示信息@end


[code]@implementation UserCenter600Item...// 设置是否会员- (void) setVipState: (BOOL)isVip { _isMember = isVip;}// 设置会员提示信息- (void) setVipText: (NSString*)text { _memberText = text;}@end


设置提示信息放置位置

[code]@implementation UserCenter600ItemCell { ... UILabel *_memberLabel; // 会员中心提示}- (BOOL) shouldUpdateCellWithObject:(id)object { UserCenter600Item *item = object; // 删除会员中心, 这个非常重要!!! if (_memberLabel) {[_memberLabel removeFromSuperview]; } // 会员中心设置 if (item.isMember) {_memberLabel = [[UILabel alloc] initWithFrame:CGRectMake(viewWidth()/320*164, 17, 200, 16)];[_memberLabel setFont:[UIFont systemFontOfSize:9*viewWidth()/320]];[self.contentView addSubview: _memberLabel];NSLog(@"member: %@", item.memberText);[_memberLabel setText:item.memberText]; } ...}@end


这里踩了一个大坑! 导致我思考很久, 特此分享!

在更新页面时, 提示信息总是更新时无法去掉, 为什么呢?

我已经设置item.isMember是false, 始终找不到原因, 最终发现

[code]if (_memberLabel) [_memberLabel removeFromSuperview];


这句非常重要, 写得很好, 在不用时, 即时删掉, 问题解决!

登出时代码

[code]// 登出操作已经在setting界面完成,这里只需要更新UI- (void) logout { [_vipDetailItem setVipText:@""]; // 更新当前的界面 [self setLoginStatus]; // 重新加载页面数据 [self.tableView reloadData];}


最后注意适配屏幕宽度, 5s和6各有不同, 使用viewWidth()和viewHeight()确定.

[code]// 屏幕宽度CGFloat viewWidth() { static CGFloat viewWidth = 0; if (viewWidth == 0) {viewWidth = CYScreenBounds().size.width; } return viewWidth;}// 屏幕高度CGFloat viewHeight() { static CGFloat viewHeight = 0; if (viewHeight == 0) {viewHeight = CYScreenBounds().size.height; } return viewHeight;}


使用时, 设置提示信息

[code] _vipDetailItem = [[UserCenter600Item alloc] initWithIcon:@"main_menu_account_icon.png"name:@"会员中心"]; [_vipDetailItem setVipState:YES]; // 显示Vip状态 .../** * 解析参数 * * @param httpObject 字符串字典 */- (void) parseHttpResponse:(id)httpObject { NIDPRINTMETHODNAME(); User *user = [User currentUser]; [user loadFromFile]; NSMutableArray* goodsList = [[NSMutableArray alloc] init]; // 项目信息 NSMutableArray* serviceNumList = [[NSMutableArray alloc] init]; // 不同服务的次数 NSMutableArray* serviceIdList = [[NSMutableArray alloc] init]; // 不同服务的标号 goodsList = httpObject[@"goodsList"]; NSLog(@"goodsList = %@", goodsList); NSMutableString* member; // 会员 for (int i=0; i<goodsList.count; ++i) {[serviceNumList addObject:[NSNumber numberWithInteger:1]];[serviceIdList addObject:goodsList[i][@"goodsCode"]];if ([goodsList[i][@"goodsCode"] intValue] == 33 || [goodsList[i][@"goodsName"] isEqualToString:@"包月套餐"]) { user.matMonthPrice = [NSString stringWithFormat:@"%0.2f", [goodsList[i][@"Price"] intValue]/100.0]; [user synchronize]; member = [NSMutableString stringWithFormat:@"%@元/月, 不限次问诊", user.matMonthPrice]; if ([user matDays] >= 0) {[member appendString:@", 已开通"]; } else {[member appendString:@", 未开通"]; } break;} else { [member setString:@""];} } // 设置会员提示信息 [_vipDetailItem setVipText:member];}


OK, 提示信息完美显示.



相关阅读:
Top