繁体   English   中英

NSArray在tableView函数中给我奇怪的警告

[英]NSArray giving me weird warning when in tableView function

我正在使用此常量将rgb转换为UIColor

#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

当我在我的内部使用

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

像这样

cell.textLabel.textColor = UIColorFromRGB(colours[indexPath.row]);`

颜色定义为:

colours = [[NSArray alloc]
           initWithObjects: @[@0x808000,@0x008080,@0x9999FF,@0x008080,@0x993366,@0xFFFF99,@0xFF8080,@0x0066CC,@0x008080,@0xFF99CC,@0x3366FF,@0x99CC00,@0x969696,@0xFF9900,@0x993300] , nil ];

我收到错误消息,强烈反对 对二进制表达式('id'和int)使用无效的操作数,并 强烈建议不要对Objective-C对象指针进行自省

有什么帮助吗?

您的colours数组包含NSNumber对象,因此您必须按照UIColorFromRGB()要求将它们转换为纯整数:

cell.textLabel.textColor = UIColorFromRGB([colours[indexPath.row] intValue]);

(请注意, NSArray和其他集合类只能存储Objective-C对象,而@0x808000[NSNumber numberWithInt:0x808000]的快捷方式。)

您必须在索引处传递对象的整数值:

cell.textLabel.textColor = UIColorFromRGB([colours[indexPath.row] intValue]);

我以这种方式找到了解决方案:

  1. 首先通过以下方式初始化颜色代码数组:

     colors = [[NSArray alloc] initWithObjects: @"0x808000",@"0x008080",@"0x9999FF",@"0x008080",@"0x993366",@"0xFFFF99",@"0xFF8080",@"0x0066CC",@"0x008080",@"0xFF99CC",@"0x3366FF",@"0x99CC00",@"0x969696",@"0xFF9900",@"0x993300", nil ]; 
  2. 在UITableView的CellForRowAtIndexPath方法中排名第二。 编写以下代码:

     NSString *colorCode = [colors objectAtIndex:indexPath.row]; // Convert Color to RGB NSScanner *scanner2 = [NSScanner scannerWithString:colorCode]; unsigned baseColor1; [scanner2 scanHexInt:&baseColor1]; CGFloat listviewred = ((baseColor1 & 0xFF0000) >> 16) / 255.0f; CGFloat listviewgreen = ((baseColor1 & 0x00FF00) >> 8) / 255.0f; CGFloat listviewblue = (baseColor1 & 0x0000FF) / 255.0f; 
  3. 将ColorCode赋予单元文本颜色,如下所示:

     Cell.textLable.textColor = [UIColor colorWithRed:listviewred green:listviewgreen blue:listviewblue alpha:1.0]; 

请检查并让我知道。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM