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

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

完成的效果

设置UserCenter600Item类

@interface UserCenter600Item : CYTableItem

...
@property (nonatomic) BOOL isMember; // 是否会员
@property (nonatomic, NI_STRONG) NSString *memberText; // 会员提示信息

...
- (void) setVipState:(BOOL)isVip; // 设置是否会员
- (void) setVipText:(NSString*)text; // 设置会员提示信息

@end
@implementation UserCenter600Item

...
// 设置是否会员
- (void) setVipState: (BOOL)isVip {
    _isMember = isVip;
}

// 设置会员提示信息
- (void) setVipText: (NSString*)text {
    _memberText = text;
}

@end

设置提示信息放置位置

@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, 始终找不到原因, 最终发现

if (_memberLabel)
    [_memberLabel removeFromSuperview];

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

登出时代码

// 登出操作已经在setting界面完成,这里只需要更新UI
- (void) logout {
    [_vipDetailItem setVipText:@""];

    // 更新当前的界面
    [self setLoginStatus];

    // 重新加载页面数据
    [self.tableView reloadData];
}

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

// 屏幕宽度
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;
}

使用时, 设置提示信息

    _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, 提示信息完美显示.

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-14 19:06:37

会员中心选项添加提示信息的相关文章

Ecstore 会员中心 菜单添加一项

1.会员中心 添加菜单 ecstore_合并支付总结_会员中心添加菜单_20160113 class : b2c_ctl_site_member (图 1) ????第一步: (图1) ????????get_cpmenu() ????????$arr_bases数组里添加一个元素 ???????? ???????? ????---------------------------------------------------代码:--------------------------------

会员管理系统--网站会员中心,会员接口,自动化处理任务等

界面 项目说明 会员中心,这个系统,包含网站中的会员中心,后台的会员管理功能,提供给其他系统的会员API,以及会员相关的自动化任务. 项目功能 计划实现的会员中心功能单元如下: member-api-server:会员接口,对接其他系统 member-schedule:会员自动化处理任务,比如:定时处理会员等级 member-server:会员管理界面 member-site:网站会员中心 mybatis-generator ORM框架采用MyBatis,为了提高开发效率,先根据数据库表单结构自

dedecms会员中心存储型xss可射管理员 -中国寒龙- WWW.HACKERSCHINA.ORG

这个xss需要开启会员模块(想想光整出来的时候,意气风发的去看dede官网……)xss的位置为会员中心发布文章的地方然后选择文章->发表之后在详细内容中插入代码 <img src="1" onerror="alert(1)">然后查看文章即可可能到这有人会问,尼玛说好的打管理员呢?别着急……因为xss代码只能放在onerror等里面,然后我一直没找到办法获得cookie,然后就翻js手册翻着翻着有了想法……插入如下代码:<img src=&q

动态的给标签添加提示信息

<div id="LUnameContentDiv" style="max-width:220px;height:24px;line-height:24px;overflow: hidden;" onmouseover="ContentMouseOver(this)" title="admin"> <span id="LUnameLabel" style="color:White

DEDECMS中,会员中心的常用知识

会员中心 引入了member/config.php,即可用$cfg_ml->fields['face'].$cfg_ml->fields['spacesta']等

基于jQuery会员中心安全修改表单代码

基于jQuery会员中心安全修改表单代码.这是一款登录密码,交易密码,手机号码,实名认证,电子邮箱,安全设置表单,会员表单等设置代码.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class="Safety"> <dl> <dt> <strong>登录密码:</strong> <span>保障账户安全,建议您定期更换密码</span> <b><span

为Popuplist的下拉选项添加删除功能(NGUI)

NGUI例子里的popuplist是这样的:,但有时我们希望下拉选项都有删除功能,也就是这样:,一种方法是改popuplist的源码,我想这个实现起来不难,但现在我想说的是用反射来实现此功能,以及其他注意点. 第一步:我们查看下popuplist的源码可以发现,他有个OnCLick点击事件,而里面实现的就是绘制所有下拉选项的,并且所有下拉选项的的父节点都是mChild这个私有字段, 第二步:我们只要给popuplist再附加一个我们自己写的脚本A,在这个脚本里面通过反射mChild的孩子,就可以

帝豪时时彩+架设教程+会员中心+代理推广系源码免费下载

亲测可用的帝豪时时彩+架设教程+会员中心+代理推广系统! 一.必备工具: 1.Navicat for MySQL 2.nodejs 3.phpStudy 这里3个工具我已经下载好了,一起安装即可 全部默认  无需多余更改.3个工具安装后需要重新启动1次, 否则js组件不能正常运行. 下面开始修改下数据库密码,默认密码为root,接着复制数据库进去.然后复制平台系统文件到D盘 开始配置网站登录数据库权限. 到这里基本就已经配置好了,现在开始设置站点.域名解析就不用我说了吧,列为自行设置. 现在已经

GZFramwork快速开发框架演练之会员系统(二)添加字典模块

开始前请先阅读 GZFramwork快速开发框架之窗体设计说明 第一步:准备模块图片 图片为2张大小分别为16x16和32x32,放在\Debug\images目录下    因为会员管理模块并不多    把NavBarControl Group的图标换成32x32大小的:   修改GZVip.Main.frmMain.cs代码 修改  RefreshModule()方法中Group的Image 修改前: 修改后   修改前后对比,左边为修改前,右边为修改后 第二步:添加项目 右键解决方案添加项目