1

我有一个 Xcode 应用程序,它创建一个表视图,然后用来自 sqlite 数据库的数据填充它,这完美地工作并允许我将数据推送到新视图并删除等,

这个表视图是标签栏控制器上加载的第一个视图。当我移动到同一个控制器上的另一个视图时出现问题,即创建一个运动员,在这个视图中我可以向数据库添加一个新的运动员(工作正常)但是当我回到标签栏控制器上的 tableview 时,表是一样的,我必须注销并重新登录才能看到表中的变化,

我在 viewWillAppear 函数中尝试过 [self.tableView reloadData] ,但这什么也没做。我知道该函数被调用了,因为我在它们中放置了一个 NSLog 只是为了让您安心。

我找到了我认为可能是这里的解决方案,但我无法让它工作!

viewWillAppear,viewDidAppear 没有被调用,没有触发

我将在下面发布我的代码和故事板的屏幕截图,因为我确信这是我设置控制器的糟糕方式导致了这个错误。任何帮助将不胜感激,因为我现在处于崩溃阶段:D

-(void)viewWillAppear:(BOOL)animated {

//[super viewWillAppear:animated];

//[self.tabBarController viewWillAppear:animated];

[self.tableView reloadData];
NSLog(@"i just ran viewwillAppear");

}


- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {

athleteObject *athObj3 = [athletes objectAtIndex:indexPath.row];

athleteIdDelete = athObj3.athId;

[self openDatabase];

[self deleteAthleteFromDataBase];

[athletes removeObjectAtIndex:indexPath.row];

[tableView reloadData];

}

reloadData 在我的 commitEditing 函数中工作(当我通过滑动删除条目时会更新表格视图)

任何帮助将不胜感激,我会在下面发布屏幕截图。

(如果可能的话,无法弄清楚如何加载屏幕截图)

4

2 回答 2

5

看起来运动员(我假设是 NSMutableArray)没有在 viewWillAppear 中更新。在调用 reloadData 之前,您是否尝试过运行从数据库中填充数组的选择器?

希望有帮助!

于 2013-04-16T16:31:52.440 回答
0

我假设您根据从数据库返回的对象数量来设置代码中的行数/节数。

在此方法处设置断点,每次编译器中断时获取计数。您可能没有从数据库中获取任何对象,因此编译器永远不会运行其余的表视图 dataSource 方法。

于 2013-04-16T16:32:18.340 回答