私は完全に困惑している問題に直面しています。performSegueWithIdentifier はほとんどのデバイスで問題なく動作しますが、iOS バージョン 6.0 を搭載した iPad でプログラムを実行すると、セグエが発生しません。
私のコードの仕組みは次のとおりです。
私は performSegue を呼び出します:
[self performSegueWithIdentifier:@"watchSegue" sender:self];
宛先View ControllerのinitWithCoderをトリガーするもの:
-(id) initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if ( self ) {
}
return self;
}
prepareForSegue をトリガーするのは次のうちどれですか。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
...
}
ここが違うところです。これが機能するすべてのデバイスで、宛先ビュー コントローラーの viewDidLoad が呼び出されます。
- (void)viewDidLoad
{
....
ただし、iPad iOS6.0 では呼び出されず、実際にセグエは実行されません。
私は実際には別の iPad アプリを持っていないことに注意することが重要です。単に iPad で iPhone アプリを実行しているだけなので、コードとストーリーボードは同じです。
------------更新 1: 5.1.1 を実行している iPhone でこのバグを再現できました。私のセグエがこれまでずっと機能していた(そしてこのバージョンで機能している)理由は私には理解できませんが、この1つのケースだけで機能しなくなります...
----------更新 2: 残念ながら、この回答では、この問題をより深く理解することも、再発を防ぐこともできません。しかし、私は問題を修正しました。
セグエを削除してストーリーボードに追加し直すことで、問題を解決できました。viewDidLoad が呼び出され、セグエが実行されるようになりました。
誰かが何がうまくいかなかったのかについての洞察を持っているなら、私はそれを大いに感謝します.