填充表视图不会显示数据

时间:2011-12-17 01:11:48

标签: xcode uitableview populate

我是一名新手程序员,正在通过Troy Brant撰写的“The Complete Idiot指南iPad和iPhone App开发”(我的问题出现在第14章,“Frenemy”应用程序中)。在发布时Xcode 4.2不存在。这个事实以及这本书充斥着拼写错误的事实使得这种学习经历令人沮丧但却很有价值。唉,我遇到了一个我似乎无法解决的问题。我创建了一个表视图,并用twitter用户名填充它。我已经按照这本书来写信,甚至下载了作者的“完成”源代码。在运行时,所有发生的是我的表视图和导航栏显示,但表是完全空的。当我运行他的“完成”源代码时,会发生完全相同的事情。我的问题是:是否有一个我应该调用的特定方法(例如updateInterface),以便显示我告诉该表要收集的数据或应该... ...

-(void)viewDidLoad
{
    [super viewDidLoad];

    self.title = @"Frenemies";

    frenemiesTableView.dataSource = self;
    frenemiesTableView.delegate = self;   
}

...方法足够吗?另外,如果我应该调用updateInterface相对,我该如何定义该方法?我整个星期都在使用这个网站,最后决定注册并提出我的第一个问题,因为到目前为止你们已经能够引导我找到很好的答案。我非常感谢任何建议。

以下是我的FrenemiesViewController.m类:

-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    //following line tells the table to create as many rows as rootUser has frenemies
    return [rootUser.frenemies count];
}


//give the table view the cell to display for a single row

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //REUSE CELLS FOR BEST SCROLLING PERFORMANCE
    static NSString *cellId = @"cellId";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];
    if (!cell)
    {
        //create a cell only if one couldn't be reused
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId];
    }

    //DISPLAY FRENEMY'S NAME INSIDE THE CELL
    NSDictionary *frenemyDict = [rootUser.frenemies objectAtIndex:indexPath.row];
    cell.textLabel.text = [frenemyDict objectForKey:@"name"];
    return cell;
}

2 个答案:

答案 0 :(得分:0)

您没有向我们展示您的dataSource。您的表需要加载某种数据。

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.title = @"Frenemies";

    frenemiesTableView.dataSource = self;
    frenemiesTableView.delegate = self;  

    someArray = [NSArray arrayWithObjects:@"One",@"Two",@"Three",nil];
}

返回someArray中的对象数。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return [someArray count];
}

someArray加载到表格中:

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

    cell.textLabel.text = [someArray objectAtIndex:indexPath.row];

    return cell;
}

答案 1 :(得分:0)

如果要重新加载UITableView的内容,请使用-reloadData方法。