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

Локализация в Swift 2

CloudKit извлекает все подписки от текущего пользователя

Как правильно передать обработчик блока в эту функцию в Swift?

Невозможно использовать библиотеку Parse в расширении WatchKit (CocoaPods)

Как создать сеанс в родном приложении iOS, используя Facebook OAuth и Rails Devise gem?

Xcode UI инструкция по эксплуатации

Кордова пытается набрать номер телефона

Проблема с прозрачностью при преобразовании UIView в UIImage

Как сохранить и загрузить JSON в NSUserDefaults с помощью SwiftyJSON?

UITableView внутри UICollectionViewCell, все UITableViewCells выделяются при нажатии на ячейку

zxing в xcode 4.5 и ios 6

Страница сведений о приложении для Facebook в настоящее время не подлежит представлению

NSUserDefault vs Global Variable vs CD vs Singleton – конкретный пример

UICollectionView moveItemAtIndexPath: toIndexPath: проблемы перемещения элементов не на экране

Использование функции splitviewcontroller на iPhone сначала отображает подробный вид

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