0

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

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

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

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

[first refreshList];

在 Firstview 控制器中

-(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]];
4

2 回答 2

0

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

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

于 2013-08-04T13:25:21.383 回答
0

正如布鲁诺之前提到的,您每次都在实例化您的表格视图,这不是正确的方法。您需要刷新具有原始数据的同一个表视图。

在你的刷新列表中做这样的事情

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

    UITableview *tableview = [self tableview];

    // Do your data manipulation

    [tableview reloadData];

}
于 2013-08-04T13:56:11.933 回答