を実装するiOS6ベースのプロジェクトがありUITableView
ます。テーブルビューの各セルにはUITextField
、ユーザーが情報を入力できるようにするものが含まれています。ユーザーがテキストフィールドをクリアするか、フィールドからすべての入力を削除すると(つまり、[textfield length] == 0
別のセル(テキストフィールド)をタップすると、テーブルビューから前のセル(テキストフィールド)が空であるため削除されます-これにより、空が回避されますテーブルビューに蓄積するセル。
これはすべて、テキストフィールド-textFieldEditingDidEnd:
のイベントで発生するというメソッドを使用して行われます。UIControlEventEditingDidEnd
- (void)textFieldEditingDidEnd:(UITextField *)textField {
NSIndexPath *indexPath = // Index path of the row in the table view
if ([textField.text length] == 0) {
// Delete the cell from the table view
[self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
}
}
ただし、コードが起動されると、アプリがクラッシュし、コンソールに次のメッセージが表示されます。
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Attempt to delete row containing first responder that refused to resign'
私はこれまでこのメッセージを見たことがなく、Webを検索するときにこのメッセージへの参照は特に多くないようです。この問題を解決する方法についての提案をいただければ幸いです。