Ошибка: в segue должен быть либо обработчик выполнения, либо он должен переопределять -perform swift [duplicate]

Это также хорошо для Unit Testing, вы можете вводить свои собственные классы (отвечающие требованиям интерфейса) в класс, который зависит от него

6
задан EI Captain v2.0 31 August 2015 в 11:13
поделиться

4 ответа

Убедитесь, что в вашем раскадровке тип segue не настроен на пользовательский. Если вы установите его на заказ, вам нужно будет предоставить свой собственный класс segue.

28
ответ дан user3673027 21 August 2018 в 06:50
поделиться

не называть супер ...

class CustomSegue: UIStoryboardSegue {

    override func perform() {
        // super.perform() NOOO or crash!
        let src = self.sourceViewController
        let dst = self.destinationViewController
        src.navigationController?.pushViewController(dst, animated: true)
    }

}
1
ответ дан ingconti 21 August 2018 в 06:50
поделиться
4
ответ дан Thomas Verbeek 21 August 2018 в 06:50
поделиться

Если для вашего сеанса установлено значение «Пользовательский», вам необходимо переопределить метод выполнить . Вы можете выполнить этот пример .

В принципе создать класс, который наследуется от UIStoryboardSegue, например:

MyCustomSegue.h

@interface MyCustomSegue : UIStoryboardSegue
@end

MyCustomSegue.m

@implementation MyCustomSegue
- (void) perform {
    UIViewController *src = (UIViewController *) self.sourceViewController;
    UIViewController *dst = (UIViewController *) self.destinationViewController;

    [src.navigationController pushViewController:dst animated:YES];
}
@end

Я думаю, что этот код может сработать для вас.

3
ответ дан voghDev 21 August 2018 в 06:50
поделиться
  • 1
    ОП запросил быстрое решение 1 – Jeff Kranenburg 27 November 2015 в 21:21
  • 2
    Это решение фиксирует точную ошибку, которую он имеет. Я добавлю быструю адаптацию моего ответа, как только у меня будет один (я работаю с objC только на данный момент). Этот ответ все равно фиксирует проблему – voghDev 29 November 2015 в 17:30
Другие вопросы по тегам:

Похожие вопросы: