【问题标题】:how to assign 3 different colour to rows in an order and reverse that order如何按顺序为行分配 3 种不同颜色并反转该顺序
【发布时间】:2015-10-15 04:01:25
【问题描述】:

我正在设计一个使用表格视图的应用程序。在这里,我必须同时为 tableview 的单元格分配 3 种不同的颜色......从下一行分配这些颜色后,问题来了,我必须再次以相反的顺序分配相同的颜色。例如,我有 3 种颜色,我需要分配这些颜色的顺序是: 红-绿-蓝-蓝-绿-红-红-绿-蓝-蓝-绿-红...等等。 这里可以说我们不知道这个序列应该只有多少行应该像这样继续......请帮助!!!

【问题讨论】:

    标签: ios objective-c iphone uitableview user-interface


    【解决方案1】:

    将下面的数组声明为全局数组:

     NSMutableArray *colorArray;
    

    ViewDidLoad函数:

     colorArray = [[NSMutableArray alloc] initWithObjects:[UIColor redColor],[UIColor greenColor],[UIColor blueColor],[UIColor blueColor], [UIColor greenColor], [UIColor redColor], nil];
    

    cellForRowAtIndexPath 方法:

    cell.backgroundColor = [colorArray objectAtIndex:indexPath.row % 5];
    

    完成了:)。

    【讨论】:

      【解决方案2】:

      你需要初始化一个颜色数组并在你的 cellForRowAtIndexPath 方法中使用 声明一个数组

      NSMutableArray *colors;
      

      确实加载了

      color=[[NSMutableArray alloc]init];
      

      在viewDidLoad中调用这个方法

      -(void)initializeColorArray
      {
      UIColor *color1=[UIColor redColor];
      UIColor *color2=[UIColor orangeColor];
      UIColor *color3=[UIColor yellowColor];
      NSArray *Listcolor = @[color1,color2,color3,color3,color2,color1];
      for (int i=0; i<[tableData count]; i=i+[Listcolor count])
      {
          for (int i=0; i<[Listcolor count]; i++)
          {
              [colors addObject:[Listcolor objectAtIndex:i]];
          }
      }
      NSLog(@"%@",color);
      }
      

      并使用颜色数组在 cellForRowAtIndexPath 方法中分配背景颜色

      cell.backgroundColor=[colors objectAtIndex:indexPath.row];
      

      它将提供与您需要的相同的输出 快乐编码.. :)

      【讨论】:

      • 这可以,但不是最好的方法。每当您在 tableview 数据源中添加/删除某些内容时,您也必须从颜色数组中添加/删除。而且,您只需要显示 3 种颜色。 @sneha 的回答是正确的。
      • 如果你需要相同的颜色模式(即红色 - 绿色 - 蓝色 - 蓝色 - 绿色 - 红色 - 红色 - 绿色 - 蓝色 - 蓝色 - 绿色 - 红色...),无论表视图的数据源如何......我的代码可以工作。我同意 sneha 的代码很好,但没有给出所需的输出。 sneha 代码的输出类似于 Red - Green - Blue - Blue - Green - Red - Green - Blue - Blue - Green - Red.. 与所需的不同。
      【解决方案3】:

      非常简单但很棘手的问题

      只需将其粘贴到 cellForRowAtIndexPath 中

       cell.backgroundColor=[self colorForIndex];
      

      并定义方法

      -(UIColor*)colorForIndex
      {
      
      
      UIColor *returnColor;
      NSArray *colorsArray=@[[UIColor whiteColor],[UIColor redColor],[UIColor greenColor]];
      NSArray *reverseColorsArray=@[[UIColor greenColor],[UIColor redColor],[UIColor whiteColor]];
      
      if(currentSet%2==0){
      
          returnColor =[colorsArray objectAtIndex:counter3];
      
      }else{
      
          returnColor =[reverseColorsArray objectAtIndex:counter3];
      
      }
      counter3++;
      if(counter3==3){
      
          currentSet++;
          counter3=0;
      }
      
      return returnColor;
      

      }

      【讨论】:

      • 试试这个让我知道
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-12
      • 1970-01-01
      • 1970-01-01
      • 2021-06-23
      • 1970-01-01
      • 2016-05-08
      • 2017-05-14
      相关资源
      最近更新 更多