如何在UICollectionview中识别特定的单元格

时间:2016-06-11 09:32:30

标签: ios objective-c uicollectionview

enter image description here

我想为 cell1,cell4,cell7,... n &amp ;;设置颜色黑色 cell2,cell5,cell8,... n 白色 注意:单元格数量不固定。

我该如何实现?

3 个答案:

答案 0 :(得分:3)

我认为您的cellForItemAtIndexPath知道如何从{{1234获取细胞编号1}}传递给方法。然后你可以通过获得除以3的余数来决定使用什么颜色,如下所示:

NSIndexPath

答案 1 :(得分:1)

正如您对奇数/偶数(使用n%2 == 0 | 1)条件所做的那样。

在这里,你想要每三个细胞。因此,您可以使用3而不是2修改odd / even的逻辑。

  public static void ProducerConsumer(string path)
    {
        var capacity = 50000;
        var collection = new BlockingCollection<string>(capacity);
        var dict = new Dictionary<string, int>();
        var tasks = new List<Task<Dictionary<string, int>>>();
        var producer = Task.Factory.StartNew(() =>
        {

            Parallel.ForEach(File.ReadLines(path), (line) =>
            {
                collection.Add(line);
            });
            collection.CompleteAdding();
        });

        for (int i = 0; i < 1; i++)
        {
            var consumer = Task.Factory.StartNew<Dictionary<string, int>>(() =>
            {
                var localDict = new Dictionary<string, int>();
                while (!collection.IsCompleted)
                {
                    string line;
                    if (collection.TryTake(out line))
                    {
                        Map(line, localDict);
                    }
                }
                return localDict;
            });
            tasks.Add(consumer);
        }
        int count = 0;
        while (tasks.Count > 0)
        {
            var id = Task.WaitAny(tasks.ToArray());

            var res = tasks[id].Result;
            count += res.Sum(k => k.Value);
            Aggregate(res, dict);
            tasks.RemoveAt(id);
        }
        Console.WriteLine($"Values sum : {count}");
        ShowResult(dict);
        ShowTotal(dict, "End");


    }
    public static void Map(string line, Dictionary<string, int> dict)
    {
        var parts = line.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
        var streetName = parts[3];
        if (dict.Keys.Contains(streetName))
        {
            dict[streetName]++;
        }
        else
        {
            dict.Add(streetName, 1);
        }
    }
    public static void ShowResult(Dictionary<string, int> dict)
    {

        var res = dict.OrderByDescending(r => r.Value).Take(10).ToList();

        foreach (var key in res)
        {
            Console.WriteLine($"{key.Key} - {key.Value}");
        }
    }
    public static void Aggregate(Dictionary<string, int> part, Dictionary<string, int> main)
    {

        foreach (var key in part.Keys)
        {
            if (main.Keys.Contains(key))
            {
                main[key] += part[key];
            }
            else
            {
                main.Add(key, 1);
            }
        }
    }

    public static void ShowTotal(Dictionary<string, int> dict, string mark = null)
    {
        Console.WriteLine($"{mark ?? ""} Keys: {dict.Keys.Count} - Values:{dict.Sum(s => s.Value)}");
    }

答案 2 :(得分:1)

你可以添加为

 if indexPath.item % 3 == 0
        {
            cell.backgroundColor = UIColor.greenColor()

        }
        else if indexPath.item % 3 == 1{
            cell.backgroundColor = UIColor.WhiteColor()

        }