1

私のアプリには、UIViewControllers A、B、C、D があります。私がすることは、AからB、C、Dへとトラバースします.今、スタックはA、B、C、Dのように読み取ります

次に、スタックの上位 2 項目である C と D を削除します。

[self.navigationController popToViewController:BViewController animated:NO];

NSLog を実行すると、スタックに A,B があります。CIに移動しようとすると、「ネストされたプッシュアニメーションがナビゲーションバーの破損につながる可能性があります」というメッセージが表示されます。なぜこれが起こっているのか、私は困惑しています。誰でもこの問題を解決するのを手伝ってくれませんか。御時間ありがとうございます

編集 BI から C に移動するには、以下のコードを使用します

UIStoryboard *storybord = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *viewController = [storybord instantiateViewControllerWithIdentifier:@"C"];
[self.navigationController pushViewController:viewController animated:YES];

このコードが実行された後、D にプッシュする非同期コードがあります。

UIStoryboard *storybord = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *viewController = [storybord instantiateViewControllerWithIdentifier:@"D"];
[self.navigationController pushViewController:viewController animated:YES];

スタックは A、B、C、D を読み取ります。ポップすると、問題が発生します

非同期コード

 [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {

            if (error) {
                NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
                [defaults setValue:@"messagehomescreen" forKey:@"lastscreenstatus"];
                UIStoryboard *storybord = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
                UIViewController *viewController = [storybord instantiateViewControllerWithIdentifier:@"D"];
                [self.navigationController pushViewController:viewController animated:YES];

            } 
        }];
4

2 に答える 2

-1

試す

BViewController *BViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"BVC"];
[self.navigationController pushViewController: BViewController animated:YES];

編集: はい -pushviewcontrollerコントローラーをスタックに追加します。使用しないでください。

-popToViewControllerは、ビュー コントローラーをスタックからポップして、既に存在するものまで下げるために使用されます。ただし、スタック上にビュー コントローラーの配列があるため、以下のコードのように、そのうちの 1 つを引数として提供する必要があります。

 [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:1] animated:YES];

詳細については、このリンクを参照してください。

于 2014-01-13T09:35:05.643 に答える