从子视图返回后,UITableView不会刷新

时间:2014-06-01 18:32:53

标签: ios iphone uitableview

我正在阅读Big Nerd Ranch的书,我使用UITableView编写了一个小应用程序。让UITableView显示广告资源中的项目。在didSelectRowAtIndexPath:时,它会进入子视图,您可以在此处编辑项目的属性,即detailViewController。之后,您可以通过导航控制器的后退按钮返回UITableView

然而,首先按下后退按钮后它不会刷新。你必须去detailViewController并回来看看变化,它是否是同一个项目并不重要。

导航类似于:ItemsViewController > DetailViewController

ItemsViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self.tableView registerClass:[UITableViewCell class]
           forCellReuseIdentifier:@"UITableViewCell"];

    UIView * header = self.headerView;
    [self.tableView setTableHeaderView:header];
    self.tableView.delegate = self;
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [self.tableView reloadData];
}

DetailViewController.m

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];

    //  Clear first responder
    [self.view endEditing:YES];

    //  Save "changes" to the item
    BNRItem * item = self.item;
    item.itemName = self.nameField.text;
    item.serialNumber = self.serialNumberField.text;
    item.valueInDollars = [self.valueField.text intValue];
}

思想?

1 个答案:

答案 0 :(得分:2)

您应该更改viewWillDisappear:DetailViewController方法中的值。 viewWillAppear:的{​​{1}}方法在ItemsViewController viewDidDisappear:之前执行,因此在刷新表后,您的DetailViewController更改。