如何正确地将NSDictionary值传递给UITableViewCell

时间:2011-09-23 03:05:27

标签: iphone ios uitableview nsdictionary

嘿伙计我有问题,我有NSArrays的NSDictionary,我试图设置字母部分,所以AAAAA,BBBB,CCCC等等,但是当我通过我的值传递所有的A值时直接进入一个uitableviewcell然后是下一个B ...这不是我所追求的。我希望每个UItableviewcell都有一个带有一个NSArray / Dictionary值的字母部分..

这就是我目前正在设置它的方式,我想也许我可能会错过一个If语句然而我只是不确定如何做到这一点,如果可能的话会有所帮助..提前感谢。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    } 

    cell.accessoryType = UITableViewCellAccessoryNone; //make sure their are no tickes in the tableview 
    cell.selectionStyle = UITableViewCellSelectionStyleNone; // no blue selection

    // Configure the cell...
    if(indexPath.row < [self.arraysByLetter count]){

        NSArray *keys = [self.arraysByLetter objectForKey:[self.sectionLetters objectAtIndex:indexPath.row]];
        NSString *key = [keys description];
        NSLog(@"thingy %@", key);

        cell.textLabel.text = key;
   }

    return cell;
}

这就是它在模拟器上的样子 enter image description here

UPdate我按照下面的建议对我的代码进行了更改,现在发生了这种情况......

模拟器首次加载时 enter image description here

然后滚动到列表底部并返回顶部,它看起来像这样。 enter image description here

1 个答案:

答案 0 :(得分:1)

NSString *key = [keys description];

在这里,您将文本设置为 ALL 键的字符串表示形式。 :)

我想你想要这个(我希望我能正确地解释你的代码)

NSArray *keys = [self.arraysByLetter objectForKey:[self.sectionLetters objectAtIndex:indexPath.section]];
NSString *key = [keys objectAtIndex:indexPath.row];
NSLog(@"thingy %@", key);

因此,使用IndexPath部分获取KeysArray, 然后使用IndexPath行获取单元格的值。