0

現在、ルートコントローラーを別のビューコントローラーに置き換えることができるように、このガイドを使用しています。 http://starterstep.wordpress.com/2009/03/05/ching-a-uinavigationcontroller%E2%80%99s-root-view-controller/

現在、私は自分のアプリでそれを取得しています。

次のシナリオを検討してください。ビュー A (ルート) -> ビュー B

ビュー B には、解析アルゴリズムに使用される firstLine (viewDidLoad で YES に設定) と呼ばれるブール値があります。初めてビューに入ったとき、アルゴリズムは完全に機能します。(ビュー A -> ビュー B)

ただし、この新しいシナリオは私の解析アルゴリズムを破ります。

ビュー A -> ビュー B (押し戻される) -> ビュー A -> ビュー B (ブレーク)

これは、最初にビューに入ったときにブール値 (firstLine) が YES に設定されていると想定されるときに、奇妙に交互に変化する場所です。最初のビュー B がまだバックグラウンドで実行されていると思い始めています。したがって、 popViewController を試しましたが、実際には機能しませんでした。黒い画面が表示されましたが、これは明らかに私が望んでいないことです。

何か案は?

編集:解決済み

私は NSTimer を使用していたことが判明し、それは自然に消え続けました。したがって、ビューを離れるときに無効にする必要がありました。

4

2 に答える 2

0

この質問への回答を見てくださいiOS UIViewController ライフサイクルを理解するために これは、ビューでフラグを設定するタイミングと、ある UIView から別の UIView に何が起こるかを判断するのに役立ちます。

于 2013-02-21T23:08:29.877 に答える
0
[self.navigationController setViewControllers:myPreparedNewVCsStack 
animated:YES];

任意のビュー コントローラーをフィルター処理、移動、および置換できます。

NSMutableArray *tempStack = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];

[tempStack filterUsingPredicate:[NSPredicate predicateWithFormat:@"class != %@", [AViewController class]]]; // the predicate can be even @"firstEnter == YES"

新しいスタックの最後のView Controllerが一番上になります!

于 2013-02-21T23:45:15.167 に答える