我是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]];
答案 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];
}