【问题标题】:Converting table view to have sections将表格视图转换为具有部分
【发布时间】:2011-01-31 07:04:11
【问题描述】:

我有一个表格视图,它的数据源来自一个包含人名的数组。

现在为了方便找人,我想对表格视图进行分区,使其右侧有字母 A-Z,就像地址簿应用一样。

但我当前的数组只包含NSStrings 的集合。如何拆分它们以便按名称的第一个字母分组?有什么方便的方法吗?

编辑:如果有人对我的最终代码感兴趣:

NSMutableArray *arrayChars = [[NSMutableArray alloc] init];

for (char i = 'A'; i <= 'Z' ; i++) {
    NSMutableDictionary *characterDict = [[NSMutableDictionary alloc]init];
    NSMutableArray *tempArray = [[NSMutableArray alloc] init];

    for (int k = 0; k < [myList count]; k++) {

        NSString *currentName = [[friends objectAtIndex:k] objectForKey:@"name"];
        char heading = [currentName characterAtIndex:0];
        heading = toupper(heading);

        if (heading == i) {
            [tempArray addObject:[friends objectAtIndex:k]];
        }
    }
    [characterDict setObject:tempArray forKey:@"rowValues"];
    [characterDict setObject:[NSString stringWithFormat:@"%c",i] forKey:@"headerTitle"];
    [arrayChars addObject:characterDict];

    [characterDict release];
    [tempArray release];
}

在函数结束时,我将拥有:

arrayChars [0] = dictionary(headerTitle = 'A', rowValues = {"adam", "alice", etc})
arrayChars[1] = dictionary(headerTitle = 'B', rowValues = {"Bob", etc})

感谢大家的帮助!

【问题讨论】:

    标签: iphone ios uitableview ios4 nsarray


    【解决方案1】:

    您可以使用字典对它们进行排序,因此创建一个包含所有要排序的字母的数组和一个包含 nil 对象的数组来初始化字典

    NSArray *names = @[@"javier",@"juan", @"pedro", @"juan", @"diego"];
    NSArray *letters = @[@"j", @"p", @"d"];
    NSMutableArray *objects = [[NSMutableArray alloc] init];
    
    for (NSInteger i = 0; i < [letters count]; ++i)
    {
        [objects addObject:[[NSMutableArray alloc] init]];
    }
    
    NSDictionary *dictionary = [[NSDictionary alloc] initWithObjects:objects forKeys:letters];
    

    那么你必须找到单词的第一个字母并将该单词放入字典中的相应键中

    for (NSString *name in names) {
        NSString *firstLetter = [name substringToIndex:1];
    
        for (NSString *letter in letters) {
            if ([firstLetter isEqualToString:letter]) {
                NSMutableArray *currentObjects = [dictionary objectForKey:letter];
                [currentObjects addObject:name];
            }
        }
    
    }
    

    要检查你可以直接打印字典

    NSLog(@"%@", dictionary);
    

    然后你的工作就是使用字典在 tableview 中填充你的部分

    【讨论】:

      猜你喜欢
      • 2019-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多