0

例如,我有 3 篇文章,当我显示文章时,我想在第一篇文章之前再显示一个单元格(总共 4 个)。

我需要显示不在数组中的第一篇文章,然后显示在数组中的文章。

更新

在此处输入图像描述

我尝试了下一个:

- (NSInteger)tableView:(
UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return ([arr count] + 1);

}

但是我的应用程序有时会崩溃,我看到 NSLOG 然后该应用程序在我调用 [tableView reloadData] 之前进入 cellForRowAtIndexPath。

4

4 回答 4

2

这是你不应该真正做的事情。

好吧,您可以通过返回一个包含 2 个子视图的视图(来自 -tableView:cellForRowAtIndexPath:) 来欺骗框架:您的“第一篇文章”单元格和原始的第一个单元格;不要忘记修改 -tableView:heightForCellAtIndexPath: 以及(否则您的视图会被剪切)。

但一般来说,您应该更改表格视图后面的数据模型以显示 4 个单元格——这只是一种更有效的方法。

于 2012-11-09T12:51:27.957 回答
1

你可以这样做:

使用此方法返回一个附加行:

// Each row array object contains the members for that section
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{
     return [YouArray count]+1; 
}

最后检查此添加的行:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// Create a cell if one is not already available
    UITableViewCell *cell = [self.mContactsTable dequeueReusableCellWithIdentifier:@"any-cell"];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"any-cell"] autorelease];
         }

     //Identify the added row
     if(indexpath.row==0)
     {
        NSLog(@"This is first row");
     } 
     else{
      // Write your existing code

     }

}
于 2012-11-09T12:58:37.067 回答
1

您需要使用在数组中添加一个额外的值insertObject

[arr insertObject:[NSNull null] atIndex:0];

并实现如下方法:

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

- (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];
    }
    if([arr onjectAtIndex:indexPath.row] == [NSNull null])
    {
      // 1st cell extra cell do your stuff
    }
    return cell;
}
于 2012-11-09T12:59:19.650 回答
0

您是否将所有文章都保存在一个数组中?您也应该将新文章添加到数组中。该数组是您的数据源。如果您希望新文章出现在顶部单元格中,我认为您希望将新文章作为数组中的第一个元素插入。一旦你更新了你的数组,你应该调用[mytableView reloadData]它来触发所有数据源方法被调用并重新加载你的表的数据。

于 2012-11-09T12:50:42.300 回答