Я установил точку останова на исключение и получал ошибку unrecognized selector sent to instance
, экземпляр был самим UITableViewCell. Приложение использует CoreData, и когда UITextfield завершит редактирование, я хочу сохранить текст в NSManagedObject.
Вот метод textFieldDidEndEditing
в моем TableViewController:
- (void)textFieldDidEndEditing:(UITextField *)textField {
MCSwipeTableViewCell *cell = (MCSwipeTableViewCell *) textField.superview.superview;
TehdaItem *item = [self.fetchedResultsController objectAtIndexPath:[self.tableView indexPathForCell:cell]];
item.itemTitle = cell.itemLabel.text; //The exception gets thrown on this line
// itemLabel is a UITextField and itemTitle is a string attribute of TehdaItem the NSManagedObject
NSError *error;
[item.managedObjectContext save:&error];
if (![self.fetchedResultsController performFetch:&error]) {
// Replace this implementation with code to handle the error appropriately.
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}
<UITextFieldDelegate>
установлен как мой TableViewController, и я установил его как делегата для UITextField. Не могу понять, в чем проблема.
РЕДАКТИРОВАТЬ: Удаление последнего вызова superview
в MCSwipeTableViewCell *cell = (MCSwipeTableViewCell *) textField.superview.superview;
решило проблему.
1 ответ
По сути, супервизор супервизора вашего UITextField имеет тип UITableViewCell, а не ожидаемый объект MCSwipeTableViewCell. Посмотрите, где создается ячейка, которая, скорее всего, является cellForRowAtIndexPath и / или это назначение класса для ячейки прототипа, которое вы сделали в конструкторе интерфейса / редакторе раскадровки.
MCSwipeTableViewCell *cell = (MCSwipeTableViewCell *) textField.superview.superview;
и снятие последнего вызова superview
привело к решению проблемы. Я бы даже не подумал заглянуть туда без ваших предложений. Большое спасибо!
Похожие вопросы
Новые вопросы
ios
iOS - мобильная операционная система, работающая на Apple iPhone, iPod touch и iPad. Используйте этот тег [ios] для вопросов, связанных с программированием на платформе iOS. Используйте связанные теги [target-c] и [swift] для проблем, характерных для этих языков программирования.
-[UITableView itemLabel]: unrecognized selector sent to instance 0x8828c00
экземплярcell = (MCSwipeTableViewCell
.