1

私のセグエがストーリーボードに追加されました。ストーリーボードの次のものとは異なる、viewController (Deep_VC など) にプッシュしたい (Next_VC など)。私は使用しています:

Deep_VC *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"DeepVC"];
[self.navigationController pushViewController:controller animated:YES];

そこには行きますが、エラーが発生します。ナビゲーション バー タイルは、Deep_VC ではなく Next_VC 用であり、エラー メッセージは次のとおりです。

Finishing up a navigation transition in an unexpected state . . .
Unbalanced calls to begin/end appearance transitions . . .

私の prepareForSegue は次のようになります。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([[segue identifier] isEqualToString:@"toNextVC"]) {
        Next_VC *vc = [segue destinationViewController];
        vc.receivedData = [NSMutableArray arrayWithObjects:passData, nil];
    }
    if ([[segue identifier] isEqualToString:@"toDeepVC"]) {
        Deep_VC *vc = [segue destinationViewController];
        vc.receivedData = [NSMutableArray arrayWithObjects:passData, nil];
    }
}

誰でも助けてもらえますか?

4

1 に答える 1

2

あなたの場合は、pushViewController の代わりに performSegue を使用したいと思います。ただし、ストーリーボードで VC を配線した場合は、プッシュする必要はありません。これは、セグエによって自動的に行われます。

編集

if (login == successful) {
       [self performSegueWithIdentifier:@"toNextVC" sender:self];
} else {
       [self performSegueWithIdentifier:@"toDeepVC" sender:self];
}

その後、 prepareForSegue が自動的に呼び出され、そこでデータを設定します。シークが適切な VC をプッシュするため、pushViewController は必要ありません。

それが役立つことを願っています!

于 2012-11-16T02:03:17.343 に答える