私はこのコードを使用して、ユーザーがアプリケーションにログインしたときにカスタムセグエを実行しています。
dispatch_async(dispatch_get_main_queue()){
self.performSegueWithIdentifier("showSTPS", sender: self)
}
私は現在、このコードをperpareForSegueに持っています(必要かどうかは完全にはわかりません)
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?){
if "showSTPS" == segue.identifier {
}
}
そして、セグエを実行しようとするたびに、次のエラーが発生します。
2015-08-31 11:56:28.998 ICEFLO [3858:651041] ***キャッチされなかった例外「NSInternalInconsistencyException」が原因でアプリを終了しています。理由:「識別子「showSTPS」でセグエを実行できませんでした。セグエにはperformHandlerが必要であるか、-performをオーバーライドする必要があります。
何をすべきかについての提案は大歓迎です-これはSwift2/ios9用であることに注意してください
-ヨギ
ストーリーボードで、セグエタイプがカスタムに設定されていないことを確認してください。カスタムに設定する場合は、独自のカスタムセグエクラスを提供する必要があります。
Swiftバージョン:
class CustomSegue: UIStoryboardSegue {
override func perform() {
let src = self.sourceViewController
let dst = self.destinationViewController
src.navigationController?.pushViewController(dst, animated: true)
}
}
セグエが「カスタム」に設定されている場合は、performメソッドをオーバーライドする必要があります。あなたは続くことができます この例 。
基本的に、次のように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
私はこのコードがあなたのために働くことができると思います。
スーパーとは呼ばないでください...
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)
}
}