刷新tableview不起作用

时间:2013-08-04 11:50:35

标签: ios objective-c uitableview

我是Objective-c developpment的新手,我需要找到一种方法来刷新我的tableview。

我有2 UIViewController s,在第二个我将数据插入我的数据库然后我实例化第一个viewcontroller,它包含我的tableview。我调用一个允许它从数据库中恢复所有数据的方法,但是当我使用[tableview reloadData]时没有任何反应,并且cellforrowatindexpath没有被调用。

econdviewcontroller: //我在数据库中插入数据,然后在我的tableview所在的实例化类中调用刷新方法

first = [[FirstviewController alloc]initWithNibName:@"FirstviewController" bundle:nil];

[first refreshList];
在firstviewcontroller中

-(void)refreshList{

   self.tableview= [[[UITableView alloc] initWithFrame:self.view.bounds] autorelease];
    tableview.dataSource = self;
    tableview.delegate = self;

     NSMutableArray *array = [[NSMutableArray alloc] init];
     //I recover my data from data base

    IPADAGRIONEActivityList *arrayActivities = [IPADAGRIONEActivity findAll];

    if ([arrayActivities length] > 0)
    {
        for (IPADAGRIONEActivity * oneRec in arrayActivities)
        {
            [array addObject:oneRec];


        }
    }
    //activities is NSMutablearray that contains all my data
    self.activities = array;

    //I build dictionnary 
    [self buildObjectsDictionnary:activities

    NSLog(@"self.act%@",self.tableview);
    [array release];
    [self.tableview reloadData];
}

// numberofrowsinSection:

NSLog(@"rows%d",[[objects objectForKey:[objectsIndex objectAtIndex:section]] count]);
return   [[objects objectForKey:[objectsIndex objectAtIndex:section]] ;

// numberOfSection:

NSLog(@"nbre of section%d",[objectsIndex count]);
return [objectsIndex count];}

// CellforRowatInddexPath:它不能访问此方法

if (cell== nil) {
    cell = [[MHCActivityListCell alloc]init];
}

IPADAGRIONEActivity *activite;

cell.activityCategory.text = [NSString stringWithFormat:@"%@", [activite EMAIL]];

2 个答案:

答案 0 :(得分:0)

每次拨打-refreshList时,您都要实例化一个新的表格视图。请记住,tableView是一个视图,因此需要将其添加为子视图。

一旦你理解了这一点,你就会发现每次需要刷新时都没有理由alloc+init一个新的tableView实例(如果你因任何原因需要它,你需要添加tableView再次作为子视图)。基本上,您需要确保正在显示的tableView与您在tableView属性上存储的tableView相同。

答案 1 :(得分:0)

如前所述,Bruno,您每次都在实例化您的tableview,这不是正确的方法。您需要刷新具有原始数据的相同tableview。

刷新列表中的

执行类似这样的操作

-(void) refreshList
{
    // Get a reference to your viewcontroller's tableview

    UITableview *tableview = [self tableview];

    // Do your data manipulation

    [tableview reloadData];

}