0

使用 UITableViewController,我在其中显示一些根据制造年份排序的产品。每当用户连续点击(每行代表一个产品)时,就会显示一个新视图来编辑相同的产品。

因此,如果用户更改了制造年份,则保存后它应该显示在适当位置的主表视图中(即相应地再次排序)。为了实现这一点,我在....中调用 sort() 方法。这里 sort 方法返回 NSMutableArray 类型的对象。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Sort the records based on number of days.
    sortedProducts = [DTOConverter sort:unsortedProducts];

    return [sortedProducts count];
}

但问题是,在表格视图中,在我反弹整个视图之前,我仍然在该特定行中拥有旧值,然后它会填充新的更新值。

如果添加了新产品,也会发生同样的事情。请纠正我做错的地方,我确信这个问题可能与 indexPath 有关,但我不知道如何解决它。请帮忙。谢谢。

4

3 回答 3

2

更新 tableview 数据调用

[tableView reloadData];
于 2013-04-02T19:56:17.293 回答
0

您必须使用以下方法之一刷新表或单个行:

  • 重新加载数据
  • reloadRowsAtIndexPaths:withRowAnimation
  • reloadSections:withRowAnimation
  • 重新加载SectionIndexTitles

请参阅每种方法的文档:UITableView 类参考

注意:如果你只更新一行,不要调用[tableView reloadData]。不必重新加载表中的所有数据。

于 2013-04-02T19:56:30.573 回答
0

您可能必须在从 tableview 加载的新视图中设置委托,然后设置 tableviewcontroller 以实现该新视图控制器的委托方法。然后从该委托方法调用重新加载数据这是委托的示例:委托示例

于 2013-04-03T14:56:16.540 回答