UITableVIew objective-c中单元格的顺序不正确

时间:2016-02-06 14:57:40

标签: ios objective-c uitableview

在使用单元格填充tableview时出现问题。

有我的阵列,我的细胞应该从哪个阵列开始

items = [NSMutableDictionary dictionaryWithObjectsAndKeys:
             @"http://feeds.test.com/home", @"Home",
             @"http://feeds.test.com/publications", @"Refcardz and Guides",
             @"http://feeds.test.com/agile", @"Agile Zone",
             @"http://feeds.test.com/big-data", @"Big Data Zone",
             @"http://feeds.test.com/cloud", @"Cloud Zone",
             @"http://feeds.test.com/database", @"Database Zone",
             @"http://feeds.test.com/devops", @"DevOps Zone",
             @"http://feeds.test.com/integration", @"Integration Zone",
             @"http://feeds.test.com/iot", @"IoT Zone",
             @"http://feeds.test.com/java", @"Java Zone",
             @"http://feeds.test.com/mobile", @"Mobile Zone",
             @"http://feeds.test.com/performance", @"Performance Zone",
             @"http://feeds.test.com/webdev", @"Web Dev Zone",
             nil];

所以创建的单元格的顺序应该像这样:

主页 - Refcardz和指南 - 敏捷区 - 大数据区 - 云区 - 数据库区 - DevOps区 - 集成区 - 物联网区 - Java区 - 移动区 - 性能区 - Web开发区

但是以这种方式订购了细胞 enter image description here

这是我的cellForRowAtIndexPath,如果它有帮助:

- (UITableViewCell *)tableView:(UITableView *)sourceTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *myIdentifier = @"Cell";
    UITableViewCell *cell = [sourceTableView dequeueReusableCellWithIdentifier:myIdentifier forIndexPath:indexPath];

    NSString *curName = [webSitesNames objectAtIndex:indexPath.row];
    cell.textLabel.text = [curName copy];
    if([self.cellSelected containsObject:indexPath]){
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    }
    else{
        cell.accessoryType = UITableViewCellAccessoryNone;
    }
    return cell;
}

我真的不知道为什么会有这种奇怪的行为。 如何改进我的代码以按照我的数组顺序查看所有单元格?

1 个答案:

答案 0 :(得分:1)

您正在使用字典,字典不是有序集合。你必须使用数组。将项目转换为数组。

另一种选择是在现有字典中添加另一级字典,并使用“0”,“1”,“2”......等键

E.g。 items = [NSMutableDictionary dictionaryWithObjectsAndKeys:@ {@“url”:@“http://feeds.test.com/home”,@“title”:@“Home”},@“0”, @“url”:@“http://feeds.test.com/publications”,@“title”:@“Refcardz and Guides”},@“1”.....

基本上你使用索引作为字典的键,值是另一个带有url和标题键的字典。