• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iphone - 更改特定行颜色 uipicker

[复制链接]
菜鸟教程小白 发表于 2022-12-12 22:21:44 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有以下问题:我可以更改 uipicker 内行的文本颜色,但不能更改我想要的特定行的文本颜色,选择器会变得困惑,很多文本标签变成蓝色。

- (UIView *)pickerViewUIPickerView *)pickerView viewForRowNSInteger)row forComponentNSInteger)component reusingViewUIView *)view {
    UILabel *retval = (UILabel*)view;
    if (!retval) {
        retval= [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, [pickerView rowSizeForComponent:component].width, [pickerView rowSizeForComponent:component].height)];
    }
    retval.text = [arraySubSistemasDeSaude objectAtIndex:row];
    if(pickerView == subSistemaSaudePicker) {

        if ([retval.text isEqualToString"Seguros de saúde"]) {

            NSLog(@"ROW=%d",row);
            [retval setTextColor:[UIColor blueColor]];
        }
        if ([retval.text isEqualToString"Sistemas de Saúde e Equiparados"]) {
           NSLog(@"ROW=%d",row);
       [retval setTextColor:[UIColor blueColor]];

         if ([retval.text isEqualToString"Seguradoras-Acidentes de Trabalho, viação/pessoais e vida"]) {
            NSLog(@"ROW=%d",row);
            [retval setTextColor:[UIColor blueColor]];
         }
       if ([retval.text isEqualToString"Empresas, associações e outras entidades"]) {
            NSLog(@"ROW=%d",row);

            [retval setTextColor:[UIColor blueColor]];

       }


        [retval setBackgroundColor:[UIColor clearColor]];
        retval.font = [UIFont systemFontOfSize:14];

       }

    } else if(pickerView == horarioPicker) {
        retval.text =[arrayHorarios objectAtIndex:row];
        [retval setBackgroundColor:[UIColor clearColor]];
        retval.font = [UIFont systemFontOfSize:14];

    } else if(pickerView == examesPicker) {
        retval.text =[arrayExames objectAtIndex:row];
        [retval setBackgroundColor:[UIColor clearColor]];
        retval.font = [UIFont systemFontOfSize:14];

    } else if(pickerView == consultasPicker) {
        retval.text =[arrayConsultas objectAtIndex:row];
        [retval setBackgroundColor:[UIColor clearColor]];
        retval.font = [UIFont systemFontOfSize:14];

    }else {
        assert(NO);
    }
  return retval;
}

对不起,我的英语不好,我希望我能清楚地回答这个问题,提前谢谢。



Best Answer-推荐答案


问题是,您正在重用每一行的 View ,并且当 UILabel 颜色不应该是蓝色时,您没有将其设置回黑色。

添加此代码...

- (UIView *)pickerViewUIPickerView *)pickerView viewForRowNSInteger)row forComponentNSInteger)component reusingViewUIView *)view {
    UILabel *retval = (UILabel*)view;
    if (!retval) {
        retval= [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, [pickerView rowSizeForComponent:component].width, [pickerView rowSizeForComponent:component].height)];
    }
    [retval setTextColor:[UIColor blackColor]];
    retval.text = [arraySubSistemasDeSaude objectAtIndex:row];
    ......

这样,每次它拉出一个重复使用的 View 时,它都会首先将颜色设置为黑色。然后代码将检查您想要的蓝色并将它们设置为蓝色。你这样做的方式是在其中一些上设置蓝色,然后当你重新使用它们时,你永远不会将它重置为黑色。

关于iphone - 更改特定行颜色 uipicker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11797595/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap