数据未显示在表视图中

时间:2013-11-30 08:46:22

标签: ios objective-c uitableview

我要做的是解析XML并使元素填充表视图。 XML解析很好并在控制台中打印,但无法在表视图中显示。这是我填充单元格的代码:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
    if(cell == nil){
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"Cell"];
        NSMutableDictionary *news = (NSMutableDictionary *)[feeds objectAtIndex:indexPath.row];
        [cell.textLabel setText:[news objectForKey:@"title"]];
        [cell.detailTextLabel setText:[news objectForKey:@"link"]];
        [cell.detailTextLabel setNumberOfLines:2];
    }
    return cell;
}

3 个答案:

答案 0 :(得分:3)

我得到它显示。似乎我忘了在viewDidLoad方法中设置数据源...谢谢大家的帮助。

答案 1 :(得分:1)

您只是在创建新文本标签时向文本标签添加数据。在if语句之后将数据添加到视图中。

UITableView会在可能的情况下重复使用单元格。如果是这样,您将从dequeueReusableCellWithIdentifier:获得现有单元格。

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"Cell"];
    }

    NSMutableDictionary *news = (NSMutableDictionary*) [feeds objectAtIndex:indexPath.row];
    cell.textLabel.text = [news objectForKey:@"title"];
    cell.detailTextLabel.text = [news objectForKey:@"link"];
    cell.detailTextLabel.numberOfLines = 2;

    return cell;
}

答案 2 :(得分:1)

填写数据创建或重新使用单元格后。它现在可以正常工作,使用下面的代码。

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

    UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if(cell == nil){
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];

    }

    NSMutableDictionary *news = (NSMutableDictionary *)[feeds objectAtIndex:indexPath.row];
    [cell.textLabel setText:[news objectForKey:@"title"]];
    [cell.detailTextLabel setText:[news objectForKey:@"link"]];
    [cell.detailTextLabel setNumberOfLines:2];
    return cell;
}