我正在尝试在“编辑项目”页面上创建一个“删除”按钮,按下该按钮时将返回并删除上一页中的相关条目NSMutableDictionary
,然后更新条目的表格视图列表。
它从“编辑项目”页面上的 IBAction 方法开始,它基本上什么都不做,只是将要删除的密钥提供回上一页的控制器:
- (IBAction)deleteItem:(id)sender {
[_parentController removeItemWithDeleteButton:[_mainFactoidTextField text]];
}
这是操作实际开始的地方(在列表页面上):
- (void)removeItemWithDeleteButton:(NSString *)key {
[_currentItemsDict removeObjectForKey:key];
[self.navigationController popViewControllerAnimated:YES];
}
在该方法开始时,_currentItemsDict
有 8 个对象,在removeObjectForKey:
调用后下降到 7 个。然后它弹出顶部的 ViewController,即“编辑项目”页面,将我们返回到条目列表。
然后当该方法完成时,断点立即跳转到:
- (void)viewWillAppear:(BOOL)animated {
NSArray *tempArray = [NSArray arrayWithArray:[_currentItemsDict allKeys]];
NSArray *sortedArray = [tempArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
_currentItemsArray = [NSMutableArray arrayWithArray:sortedArray];
[_tableView reloadData];
}
但是到第一行viewWillAppear:
,_currentItemsDict
已经恢复到 8 个对象。从那时起一切正常,但一切都与原来的 8 个条目一起工作,这意味着没有任何内容被删除。
根据我对这类事情的有限经验(我绝对还是个初学者),我猜这与popViewControllerAnimated:
方法有关,但我不知道是什么。我很早就听说某些变量以不同的方式存储,这可能会使它们作为自己的早期版本返回,但我并没有完全理解这个概念。或者也许这完全是另外一回事,我不知道。我所能说的是_currentItemDict
有 7 个对象,然后一行之后它又有 8 个。
任何人都可以帮助一个新人,并解释我要去哪里错了吗?或者,如果它更容易,您能否建议一个更好的解决方案来NSMutableDictionary
从不同的 ViewController 中删除条目?(非常感谢代码示例和教程链接,因为我目前只是不够聪明,有时无法自己将理论转化为实践!)
预先感谢您的帮助!