1

iOS 8 用のアプリを更新しようとしています。

のセットがありUITableViews、それらをビュー #1​​、ビュー #2、およびビュー #3 と呼びます。

ビュー #2 からビュー #3 に渡すとき、ビュー #3 をロードしてから、ビュー #2 をスタックからポップします。

ビュー #2 では、次のコードを使用しています。

// Load an instance of view #3 
ViewThree *viewController = [[ViewThree alloc] initWithNibName:@"ViewThree" bundle:nil];
UINavigationController * navigationController = self.navigationController;       

// Push view #3 to the top of the stack
[navigationController pushViewController:viewController animated:YES];

// Now pop view #2 from the stack
NSMutableArray *navigationArray = [[NSMutableArray alloc] initWithArray:navigationController.viewControllers];
[navigationArray removeObjectAtIndex:1];  
navigationController.viewControllers = navigationArray;

ビューをプッシュおよびポップする限り、これは正常に機能します。

私の問題は、ビュー #3 が表示されると、ビュー #3 に割り当てられたものが左にスライドし、青色に変わり、 ([戻る] ボタン)navigationItem.title用に予約されたスペースを引き継ぐことです。backBarButtonItem

テキストは私のタッチに反応するようですが、画面 #1 に戻りません。画面から出るには、アプリを強制終了する必要があります。

これは、私の iPod Touch 8.0 で 9 月 9 日から発生しているようですが、私の Xcode Simulator では 9 月 9 日から発生していないようです。

ここで何が起こっているのかについて何か考えはありますか? これは iOS 7 では発生しません。


更新: NavBar のタイトルを削除することでこの問題を半分解決したと思っていましたが、< Backボタンが表示されるようになりましたが、約 50% の確率で機能しません。ユーザーがボタンをタップすると、ボタンの矢印部分が水色に変わり、ユーザーは画面から動かなくなります。抜け出す唯一の方法は、アプリを強制終了することです。

4

1 に答える 1

1

私の推測では、スタックを変更している間に

// Push view #3 to the top of the stack
[navigationController pushViewController:viewController animated:YES];

進行中 (アニメーション プッシュ) であり、UI 操作がスレッド セーフではないため、ビュー スタックの形式が正しくありません。

確認できることは次のとおりです。

  1. アニメーションを NO に変更
  2. ビュー #3 の viewDidAppear のスタックからビュー #2 を削除します
于 2014-10-16T10:07:09.650 に答える