0

我有一个基于表的应用程序,将数据存储在 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;
}
4

1 回答 1

0

我同意 reloadData 是正确的方法的解释,您需要找到并修复导致崩溃的错误。

这里有两件大事要看:

  1. 确保在更改数据库后立即调用 numberOfRowsInSection 将返回有效的新值,这是修改表的结果。(我看到很多人因此而发布问题)。

  2. 仔细查看您的 cellForRowAtIndexPath 方法。请记住,此方法不仅设置单元格中的数据,还负责回收单元格。我已经看到许多处理不当的情况——以及随后重新加载表数据时——并且需要回收和重新分配单元格——事情变得一团糟。我敢打赌 99% 你的问题就在这里。

于 2010-10-17T01:55:17.313 回答