因此,我有一个应用程序从共享存储中填充表格,当您单击某行时,它会预先形成一个segue以获取更多信息,您可以编辑您单击的项目(基本主 - 详细信息)。出于某种原因,一旦你编辑项目并返回(我使用导航控制器作为我的根视图),更改显示(在应用程序和内存中,据我所知),直到你刷新表中的数据(每次出现视图时都会刷新,或者在表中添加新信息时也会添加另一行)。即使是您不编辑的项目,所有项目属性也显示为null或0。
我已经把NSLogs和休息时间试图找出最新情况但无济于事。 如果我不尝试保存对详细视图控制器中的项目所做的任何更改,则它们不会为null,但我必须能够进行更改并获取用户输入。
我的问题似乎与此主题类似 iOS Master Detail app - detail shows only the first time 但我不明白发布的解决方案。
任何人都可以解释这个解决方案是什么或知道如何解决这个问题?
任何帮助将不胜感激!!
如果您需要一段代码,请询问。
这就是我在详细视图控制器中保存“feedItem”的方法
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
// Clear first responder
[self.view endEditing:YES];
// "Save" changes to item
BYFItemFeed *item = self.item;
item.amount=self.amountField.text ;
item.netEnergyM=self.netEnergyMField.text ;
item.netEnergyG=self.netEnergyGField.text ;
item.crudePro=self.crudeProField.text ;
item.calcium=self.calciumField.text ;
item.phosphorus=self.phosphorusField.text ;
item.cost=self.costField.text ;
}
这是我从主人转移到细节的方式
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString:@"BYFFeedDetail"])
{
NSIndexPath *indexPath = [[self tableView] indexPathForSelectedRow];
NSMutableArray *items= [[BYFFeedStore sharedStore] allItems];
BYFItemFeed *object = items[indexPath.row];
[[segue destinationViewController] setItem:object];
}
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self performSegueWithIdentifier:@"BYFFeedDetail" sender:self];
}
这就是我填充表格的方式
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// Get a new or recycled cell
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UITableViewCell" forIndexPath:indexPath];
// Set the text on the cell with the description of the item
BYFItemFeed *item = [[BYFFeedStore sharedStore] allItems][indexPath.row];
// NSLog(@"\n\n %@",item);
cell.textLabel.text = [item description];
return cell;
}