1

私は問題があります。私はタブバーベースのアプリであるアプリに取り組んでいます。このアプリでは[self.view addSubview:newVC.view]、新しいビューに移動したいときに呼び出します。newVCは、表示する新しいビューのビューコントローラーです。また[self.view removeFromSuperview]、前のビューに戻りたいときに使用します。

つまり、ナビゲーションコントローラーはありません。ここで問題となるのは、前のビューを更新したいということです。を使用しているため[self.view removeFromSuperview]viewDidAppear前のビューは呼び出されず、そのビューを更新する方法がありません。

私たちが使用したアプローチには欠陥があることは知っていますが、大規模なアプリであり、ナビゲーションコントローラーを実装するために変更するのに時間がかかるため、この問題の解決策を見つけるのを手伝ってください。サブビューから呼び出すときに、viewDidLoadまたはviewDidAppearまたは前のビューを呼び出すにはどうすればよいですか?[self.view removeFromSuperview]

4

2 に答える 2

0

はい、サラが言ったように、「スタック」に前のコントローラーへの参照を保持する必要があります。そして、スタックからコントローラーを「ポップ」するときは、前のコントローラーで適切なメソッドを呼び出します。確かに、viewDidLoadを呼び出さないでください(realのナビゲーションスタックからコントローラーをポップするときに呼び出されませんUINavigationController)。viewWillAppearまたはを呼び出すviewDidAppearこともできますが、viewRevealedなどの独自のメソッドを使用することをお勧めします(viewWillAppearまたはから呼び出すこともできますviewDidAppear)。このすべての機能を実装する基本クラスを作成し、基本クラスからすべてのコントローラーを派生させると便利です。次のようになります。

- (void) pushViewController:(BaseViewController *)baseController{
  [self.view addSubview:baseController.view];
  baseController.parentController = self;
}
- (void) pop{
  [self.view removeFromSuperview];
  [self.parentController viewRevealed];
}
于 2011-09-13T13:13:12.893 に答える
0

viewDidLoadメソッドは、メソッドを介してコントローラーにジャンプしたときにのみ呼び出されますpushViewController。を呼び出すとremoveFromSupreViewviewWillAppearメソッドが呼び出されます。ここで、タブバーを介して1つのビューから別のビューに移動する場合は、で使用UINavigationControllerMainwindow.xib、そのviewControllerをアプリデリゲートに接続する必要があります。

于 2011-09-13T06:45:12.507 に答える