1

モーダルView Controllerを表示せずにプリロードする方法はありますか? モーダル ビュー コントローラーを表示している (ビュー コントローラー クラスの割り当てと初期化を行っている) ときに、ビューの読み込みと表示に少し時間がかかるためです。その後、もう一度表示しようとすると、遅延が停止します。

を使用しておりUITableView、メソッド内でが -90 未満scrollViewDidEndDraggingかどうかを確認します。contentOffset.yもしそうなら、ユーザーは基本的に「引っ張ってリフレッシュ」し、ビューをロードしています。

4

4 に答える 4

0

ビューへのアクセスを試みることができます。これにより、viewDidLoad メソッドが呼び出されますが、これは行うべき方法ではありません...

//Preload
YourViewController * controller = [[YourViewController alloc] init];
controller.view.backgroundColor = [UIColor whiteColor];

.
.
.
.

//Load Controller after time
[self presentModalViewController:controller animated:YES];
于 2012-10-08T13:39:09.467 に答える
0

viewWillAppear、viewDidLoad を手動で呼び出すことができます。

于 2012-10-08T13:36:55.077 に答える
0
  • を使用UINibして、XIB をメモリにプリロードできます。

XIB のオブジェクト ツリーをメモリにプリデコードしますが、XIB 内のオブジェクトをインスタンス化しません。次に、 のinstantiateメソッドを呼び出してUINib、ビューをインスタンス化できます。

  • getter メソッドを呼び出して の を強制的にロードするviewこともできます(ビューは遅延ロードされるため、最初にアクセスしたときに XIB からロードされます)。UIViewControllerview

ただし、UI オブジェクトは (XIB から) メイン スレッドでしかインスタンス化できないため (すべての UI コンポーネントと UI アクションはメイン スレッドで実行する必要があるため)、アプリはまだ「フリーズ」(メイン スレッドをブロック) します。ビューをロードします。たとえば、XIB のルート UIView を別のスレッドまたはキューにロードすることはできません (それを試みると、実行時例外が発生します)。


Instrumentsとその「Time Profiler」ツールを使用して、XIBファイルの読み込みプロセスに時間がかかる場所を正確に確認してください。(解決するのは簡単かもしれませんし、ビューが表示された後にのみ遅延ロードできるコンポーネントがあるかもしれません。)

于 2012-10-08T13:36:55.067 に答える
0

ビューのすべてのコンテンツを viewWillAppear にロードして表示できます。

または、modalview のすべてのプロパティを読み込んでから、メソッドで表示することもできます。ビューをプロパティにする。

于 2012-10-08T13:38:28.660 に答える