3

UIPageViewController(デフォルトのページめくりアニメーションを使用して)本を表示するアプリを作成しています。各ページに関連するすべてのデータをコアデータの形式で維持しています。私のMyModelController.mファイルでは、initメソッドの下で、すべてのデータをフェッチし、pageData配列を初期化しています。しかし、私が見せようとしている本は巨大なものです。それで、dequeueReusableCellWithIdentifier必要なページだけがメモリにロードされるようにするようなことをする方法はありますか?

私の期待が間違っている場合は私を訂正してください。

4

4 に答える 4

2

UIPageViewControllerを使用して初期ビューコントローラを設定します

-setViewControllers:direction:animated:completion:

次に、次のUIPageViewControllerDataSourceメソッドを実装します。

– pageViewController:viewControllerBeforeViewController:
– pageViewController:viewControllerAfterViewController:

これらのメソッドを使用すると、UIPageViewControllerに現在のViewControllerの前後のViewControllerを提供できます。

このようにして、単一のView Controller(および対応するモデルデータ)のみをメモリに保持します。舞台裏でキャッシュを実行すると確信していますが、そうであれば、メモリ不足の警告がトリガーされたときにキャッシュが解放されます。

データモデル全体を単一の配列にロードする代わりに、単一のページを表すView Controller内、または上記の2つのデータソースメソッド内に、現在のViewControllerに必要なオブジェクトのみをオンデマンドでページごとにロードします。

Xcode 4.2で新しいUIPageViewControllerベースのプロジェクトを作成すると、デフォルトのテンプレートにこれを示すコードが含まれていることがわかります。

于 2011-10-31T18:30:37.060 に答える
1

間違えた場合は訂正してください。ただしUIPageViewController、デフォルトでは、次のページと前のページのみがメモリに読み込まれるため、メモリ管理について心配する必要はありません。

于 2011-11-01T00:28:36.677 に答える
0

肯定的ではありませんあなたの質問は理解していますが、本のすべてのコンテンツをページオブジェクトとしてロードしたくないようです。initメソッドで本のコンテンツ全体をロードする代わりに、表示されているページのみをロードし、ユーザーがページを「めくる」と、現在表示されているページに基づいて次のページまたは前のページをロードします。

于 2011-10-24T18:46:56.133 に答える
0

PDFブックを使用している場合は、これら2つのメソッドが呼び出されたときにのみ、目的のページをロードしてViewControllerに渡すことができます。

– pageViewController:viewControllerBeforeViewController:
– pageViewController:viewControllerAfterViewController:
于 2011-11-09T06:43:05.270 に答える