我有一个基于表的应用程序,它将数据存储在mysql服务器上,它会更新并将数据写入nsdictionary以保持持久性。当您对数据进行更改时,表需要更新。但是,如果我放置[self tableview reloadData],应用程序在选择行时会崩溃。有没有人知道如何使表刷新发生。我是否需要抛弃这个并从数据中创建一个对象并使用它?
感谢。
-(void) loadData3;{
MyAppDelegate *AppDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
self.tableDataSource3 = [AppDelegate.data3 objectForKey:@"Rows"];
NSLog(@"AppDelegate.data3 : %@",AppDelegate.data3 );
NSLog(@"self.tableDataSource3 : %@",self.tableDataSource3 );
}
- (void)viewDidLoad {
[super viewDidLoad];
[self loadData3];
if(CurrentLevel3 == 0) {
self.navigationItem.title = @"Family";
}
else
self.navigationItem.title = CurrentTitle3;
}
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
}
这是cellForRowAtIndexPath方法。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
// Set up the cell...
NSDictionary *dictionary = [self.tableDataSource3 objectAtIndex:indexPath.row];
cell.textLabel.text = [dictionary objectForKey:@"Title"];
return cell;
}
答案 0 :(得分:0)
我同意reloadData是正确的方法,你需要找到并修复导致崩溃的错误。
以下是两件值得关注的大事:
确保在更改数据库后立即调用numberOfRowsInSection将返回有效的新值,作为修改表的结果。 (我见过很多人发布了这个问题)。
在您的cellForRowAtIndexPath方法中仔细查看 。请记住,此方法不仅设置单元格中的数据,还负责回收单元格。我见过许多错误处理的情况 - 当表数据随后被重新加载 - 并且需要回收和重新分配单元格时 - 事情变得混乱。我敢打赌99%你的问题就在这里。