4

UINavigationalController を使用してビューを切り替えるのに苦労しています。このシステムを問題なく何度も使用しましたが、新しいアプリでは正しく機能しません。

問題は次のとおりです。新しいView Controllerをプッシュするときは、次のコードを使用します:

NewViewController *newVC = [[NewViewController alloc] initWithNib:@"NewView" bundle:nil];
[self.navigationController pushViewController:newVC animated:YES];
[newVC release];

newVC 内の前のビューに戻るために使用しているコードは次のとおりです。

[self.navigationController popViewControllerAnimated:YES];

これが self.navigationController 自体を解放する可能性があることを読んでいたので、次のコードを実装しました。

UINavigationController *nc = [self navigationController];
[nc popViewControllerAnimated:YES];

その結果、新しい VC への移行は白く点滅せずにスムーズに行われますが、元のページに戻ると、元のページに戻る前に newVC を解放しているかのように画面が白く点滅します。でも!デバッグ時に、元のページの viewWillAppear と newVC の dealloc にブレークポイントを配置し、newVC の dealloc が呼び出される前に、白いフラッシュで viewWillAppear + トランジションがすべて完了しました。

誰かがこれに光を当てるのを手伝ってくれるなら、私はそれを大いに感謝します.

ありがとう!〜アーラッシュ

4

3 に答える 3

10

これは古い投稿ですが、将来この問題にclipsToBounds遭遇する可能性がある人のために、ViewController のビューのプロパティを「TRUE」に設定することで解決しました。

-(void)viewDidLoad {
    [super viewDidLoad];
    self.view.clipsToBounds = YES;
}
于 2013-04-25T01:59:15.713 に答える
0

FWIW、これと同じ問題が Swift アプリで発生しました。根本的な原因は、私がこれを行っていたことにあるようです:

self.navigationItem.rightBarButtonItem = nil

UIBarButtonItem...現在の にアウトレットがあったボタンを動的に非表示にしますUIViewController

そのボタンには実際には必要なかったIBOutletので、コンセントを取り外しましたが、機能しました。

于 2017-01-05T02:43:10.550 に答える
0

ナビゲーション スタックのさまざまなビューの背景色を、認識可能な別の色 (メイン ウィンドウを含む) に変更してみてください。そのうちの 1 つが何らかの理由で表示されている可能性があり、それぞれの色が異なる場合は、どちらが原因であるかを簡単に判断できます。

于 2011-06-23T05:35:58.917 に答える