prepareForSegue не получает вызов при регистрации пользовательской ячейки

Это не проблема идентификатора segue, который неправильно написан или что-то в этом роде. Метод prepareForSegue не является prepareForSegue когда я нажимаю на ячейку в tableViewController. Оператор журнала перед оператором управления не регистрируется, если я нажимаю на ячейку, только когда я добавляю новую ячейку.

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { NSLog(@"prepare for segue"); //not getting logged if I tap on an existing cell if ([[segue identifier] isEqualToString:@"AddTopic"]) { // works fine to add a new cell } if ([[segue identifier] isEqualToString:@"ShowDetail"]){ NSLog(@"in segue to display edit"); MMDisplayEditViewController *devc = (MMDisplayEditViewController *)[segue destinationViewController]; 

Вы можете видеть на изображении ниже, что из ячейки в контроллере табличного представления имеется кнопка push segue, настроенная на контроллер отображения вида отображения. введите описание изображения здесь

Почему prepareForSegue не может быть вызван?

Обратите внимание: я использую собственный класс для ячейки представления таблицы, но я не понимаю, почему это повлияло бы на что-либо.

Обновить

Я зарегистрировал пользовательскую ячейку в viewDidLoad главного контроллера представления таблицы

 - (void)viewDidLoad { [super viewDidLoad]; [self.tableView registerClass:[MMTableViewCell class] forCellReuseIdentifier:@"Cell"]; 

3 Solutions collect form web for “prepareForSegue не получает вызов при регистрации пользовательской ячейки”

Проблема вызвана регистрацией класса ячейки в viewDidLoad,

 [self.tableView registerClass:[MMTableViewCell class] forCellReuseIdentifier:@"Cell"]; 

Вы настраиваете segue из ячейки в раскадровке, но, зарегистрировав свой класс, представление таблицы получает свою ячейку из определения класса, а не из той, что находится в раскадровке с прикрепленным к ней сегментом. Чтобы устранить проблему, просто удалите эту строку.

Документация для этого несколько неполна. Вы должны только зарегистрировать класс, если ячейка полностью выполнена в коде. Тот факт, что вы используете пользовательскую ячейку, не меняет этот факт – если у вас есть ячейка в раскадровке и вы устанавливаете ее в пользовательский класс, вы ничего не должны регистрировать.

Вместо того, чтобы связывать ваш сегмент от ячейки к следующему контроллеру представления, связывайтесь с контроллером представления на следующем контроллере представления. Дайте это segue идентификатору и реализуйте метод делегата tableView:didSelectRowAtIndexPath следующим образом:

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [self performSegueWithIdentifier:@"identifier" sender:indexPath]; } 

вы добавляете это имя «ShowDetail» в segue в раскадровке, если да, используйте этот код в файле didSelectRowAtIndexPath

 [self performSegueWithIdentifier:@"societe" sender:indexPath]; 
Interesting Posts

Имя папки в моем пути к каталогу в iPhone

MKMapVIew – Разъем для подключения к точке подключения

Dimming светодиод для iPhone 5 фонарик приложение в xCode

Плагины поддержки Safari IOS?

Realm.io: Сохранять перечисление

Удаление реплицированных файлов из проекта шаблона xcode

Подождите, пока все сетевые запросы будут выполнены, включая их блоки завершения

Пользовательский чертеж UITextField при редактировании

Динамическая ссылка Firebase всегда идет на URL-адрес магазина приложений, даже если приложение установлено

Автоматизация кадра UILabel при анимации кадра (размера) родительского UIView

Различные раскадровки для разных устройств в Xcode 6

iOS 10 XCode 8 – защищенное текстовое поле, ошибка?

Как вы определяете, не является ли spritenode равным нулю?

Почему имеет смысл дублировать указатели, чтобы разрешить циклические циклы сохранения в ARC?

Карта Google SDK версии 1.5 интегрирована с приложением iOS 7

PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.