質問

カスタムSEGUEアニメーション用のカスタムクラスが書かれています。タップジェスチャーをカスタマイズしようとしています。私のストーリーボードには、ナビゲーションコントローラー、メインビュー、そして他の2つのビューがあります。 Iveはジェスチャーを他のビューに接続し、セグエのカスタムクラスを使用するカスタムクラスを定義しましたが、以下でエラーが発生します。正常に動作するだけのプッシュを使用して別のセグエがあります。何が間違っているのかについてのアイデアはありますか?

これが私のクラスです:

- (void) perform {

    UIViewController *src = (UIViewController *) self.sourceViewController;
    UIViewController *dst = (UIViewController *) self.destinationViewController;

    [UIView transitionWithView:src.navigationController.view duration:0.8
                       options:UIViewAnimationOptionTransitionFlipFromBottom
                    animations:^{
                        [src.navigationController pushViewController:dst animated:NO];
                    }
                    completion:NULL];

}

エラー:

2012-02-20 16:04:45.889 IdeaStarters[2755:fe03] -[__NSCFDictionary setView:]: unrecognized selector sent to instance 0x6a40010
2012-02-20 16:04:45.891 IdeaStarters[2755:fe03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary setView:]: unrecognized selector sent to instance 0x6a40010'
*** First throw call stack:
(0x13ba052 0x154bd0a 0x13bbced 0x1320f00 0x1320ce2 0x4fc3e 0x922f40 0x922eeb 0x50268 0x93dd60 0x3f8c54 0x3f8c8f 0x13bbe1a 0x1325821 0x22f46e 0xd6e2c 0xd73a9 0xd75cb 0xd7941 0xe947d 0xe966f 0xe993b 0xea3df 0xea561 0x2064ca 0x50301 0x13bbe72 0x1d6492d 0x1d6e827 0x1cf4fa7 0x1cf6ea6 0x1cf6580 0x138e9ce 0x1325670 0x12f14f6 0x12f0db4 0x12f0ccb 0x12a3879 0x12a393e 0x11a9b 0x2abd 0x2a25 0x1)
terminate called throwing an exception(lldb) 
役に立ちましたか?

解決

この象徴的なブレークポイントを常に設定することは役に立つかもしれません。

https://github.com/brennanmke/interfaces/blob/master/nsassertbreakpoint.png

そのブレークポイントは、デバッガーを自動的に停止し、コールスタックをバックアップして問題の始まりを確認する機会を与えます。

NSASSERTを使用して、何かを呼び出す前に状態を検証します。

NSAssert([segue.destinationViewController isKindOfClass:[ABExpectedClass class]], @"Destination VC must be ABExpectedClass");

私はこのような問題を抱えていたことを思い出しますが、それが呼びかけようとしていたセレクターは私のコードの内側からではなく、通常はnil値で何かを呼ぶことは問題ではないはずです。私はただ何か間違ったことをしていましたが、私が使用した主張は私が論理を修正するのに役立ちました。

GitHubで他のカスタムセグをチェックしてみてください。参照として使用できる多くの人がいます。

https://github.com/search?q=uistoryboardsegue&ref=commandbar

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top