2011-06-28 10 views
0

ナビゲーションコントローラとビューコントローラを使用して質問を表示します。すべてがうまくいきましたが、アプリケーションをiPadに移植できるようにUIの調整をいくつか行いましたが、唯一の変更はテーブルビューのフレームをiphoneまたはipad上で動的にすることでした。しかし、今では私たちが335のうち187の質問に着くと、それはもはや新しい質問をプッシュしません...それは空の画面をプッシュし、プッシュされたView Controllerの "viewDidLoad"メソッドは、 187回。ナビゲーションコントローラとビューコントローラがまだメモリに割り当てられていることを確認するためにセットアップブレークポイントがあります。ここでUINavigationControllerはビューのプッシュを停止します

は、すべての新しいプッシュ呼び出されるビューコントローラののviewDidLoadである...

- (void)viewDidLoad { 
_tableView = [[QuestionTableView alloc] initWithFrame:self.view.frame style:UITableViewStyleGrouped]; 

_tableView.center = CGPointMake(self.view.center.x, self.view.frame.size.height/2); 
[_tableView setDataSource:self]; 
[_tableView setQuestionDelegate:self]; 
[_tableView setDelegate:self]; 
_tableView.scrollEnabled = YES; 

[_tableView setBackgroundView:[[[UIView alloc] init] autorelease]]; 
_tableView.directionalLockEnabled = YES; 
_tableView.delaysContentTouches = NO; 

_tableView.backgroundColor = [UIColor clearColor]; 
_tableView.opaque = NO; 
[self.view addSubview:_tableView]; 

} 

我々は、先進的な中

[questionsNavigationController pushViewController:viewController animated:YES]; 

おかげで...によってビューコントローラをプッシュ! :)

+0

また、私たちがシミュレータで実行した場合、問題はありません... ipadまたはipad2で実行すると、上記の問題が発生しています – kilabyte

+4

ナビゲーションスタックに187のビューコントローラがありますか?私はそこから始めようとしています... –

+0

同じコントローラが異なるテーブルデータでプッシュされていません。 – kilabyte

答えて

0

テーブルビューを小さくすると、335個の質問全体が表示されます。質問ごとにViewControllerを作成していますか?

メモリリークをチェックするために、計測器でプロジェクトを実行できます。

+0

同じビューコントローラが異なるテーブルデータでプッシュされているので、ビューコントローラビューを再利用しますが、アレイ内の別のオブジェクトからデータを取り込みます。 – kilabyte

+0

yupはリークを探して何も出てこなかった – kilabyte

+0

質問の詳細を破る質問187のデータに特別なものがありますかviewController?あなたはtableView _smaller_を作ったと言いましたが、正確に何をしましたか? – werner

0

本当にすべての質問がスタックに必要ですか?どのようにpopViewControllerAnimated:いいえアニメーションでも、次のものを押す前に:いいえ?

メモリはPCのメモリなので、シミュレータ上で動作します。 NSLogを-didReceiveMemoryWarningメソッドに入れて、メモリ不足を確認してください。

0

おそらく、この方法でNavigationControllerを使用しないでください。それは醜いです。

私は、次のいずれかの操作を行います。(setViewControllerを使用して)の後ろ5-10図である

  • "ポップ" ViewControllers。言い換えれば、5-10ビューを維持し、他のビューは解放されます(結果が保存されます)。ユーザーが戻ってくる(そしてスタックに3〜4のビューがある)ことを決定したら、いくつかを再構築します。
  • 自分でNavigationControllerの動作を実装します。ビューをスタッキングする代わりに置き換えてください。ユーザーが戻ったら、必要なデータでビューをリロードします。
  • あなたの実装が大丈夫だと思うなら、一度気温が上がると、あなたのビューから可能な限り多くのメモリを解放してみてください。
関連する問題