我正在阅读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];
}
思想?
答案 0 :(得分:2)
您应该更改viewWillDisappear:
中DetailViewController
方法中的值。 viewWillAppear:
的{{1}}方法在ItemsViewController
viewDidDisappear:
之前执行,因此在刷新表后,您的DetailViewController
更改。