我明白了,并会尝试解释以帮助其他人挽救他们的一天......
EXC_BAD_ACCESS 被引发是因为UITableViewController
在 Back pop-animation 期间没有正确转换(它viewWillAppear:
和viewDidAppear:
方法根本没有被触发)。反过来,动画没有正确执行,因为popViewControllerAnimated:
被调用了两次甚至更多次:1)作为系统后退按钮回调的一部分;2)textViewDidEndEditing:
在没有输入文本的情况下。
解决方法是在调用之前检查是否按下了返回按钮popViewControllerAnimated:
。诀窍是检查详细视图控制器是否仍在导航堆栈中。这是辅助方法:
-(void) returnToTheListOfRecords {
self.textView.delegate = nil; // this is to avoid the second call of `textViewDidEndEditing:`
if ([self.navigationController.viewControllers indexOfObject:self.delegate]==NSNotFound) {
// Back button has been pressed.
} else {
[self.navigationController popViewControllerAnimated:YES];
}
}
这个问题发生在 iOS7 上只是因为它的全新动画。