1

UIPageViewController を使用して、iPhone/iPad アプリでいくつかのページを表示しています。今、ユーザーがボタンを押すと、ランダムなページに移動したいと思います。ここで重要なことは、「いくつかの」ページをめくっているユーザーに「見せたい」ということです。Stackoverflow でいくつかの回答を調べて試してみました。シミュレートできる最善かつ唯一のことは、次のスニペットを使用してプログラムで「1」ページをめくる (つまり、ユーザーが 1 つのページめくりを見る) ことです。

[self.pageViewController 
         setViewControllers:[NSArray arrayWithArray:array]  
   direction:UIPageViewControllerNavigationDirectionForward 
         animated:YES completion:nil];

ここで、「いくつかの」ページめくりを表示したいと思います。つまり、ユーザーがページ 2 にいることを示します。次に、たとえば 5 ページに移動すると、現在、ページ 2 とページ 5 の間に「3」ページありますが、1 ページめくりしか表示されません。

定期的な遅延を伴う NSTimer を導入してみました。タイマーは 1 つのページに移動してから遅延し、次に別のページに移動してから遅延し (たとえば、3 回繰り返す)、ユーザーが「数回」のページ回転の「効果」を得ることができます。

[NSTimer scheduledTimerWithTimeInterval:0.2f target:self selector:@selector(goToRandomPage) userInfo:nil repeats:NO];

ただし、これにより、「最後の」ページめくりのみが表示されます。つまり、ページ 8 を表示するためにタイマーが 1 回起動され、次に 0.2 の遅延が発生し、次にページ 3 が表示され、次に 0.2 の遅延が発生し、次にページ 6 が表示されるとします。実際に表示されるもの (つまり、ユーザーが見るもの) は再び1ページめくり、つまり最後のページ(6ページめくり)だけです。

誰か助けてくれませんか?

4

1 に答える 1

0

1 つのオプションは、array一度に 1 ページずつ動的に設定し、ブロック内で同じメソッドcompletionを呼び出すことです。オブジェクトが呼び出されるsetViewControllersたびに、次のページだけを持つように変更する必要があります。ブロックは、現在のアニメーションが終了し、次のアニメーションを開始できることを確認する必要があります。必要なページに到達したら、ブロック内に条件チェックを追加してこれを破ります。私はこれを試していませんが、これは正しい方向に導くはずです。setViewControllersarrayCompletioncompletion

[self.pageViewController 
         setViewControllers:[NSArray arrayWithArray:array]  
   direction:UIPageViewControllerNavigationDirectionForward 
         animated:YES completion:^{/* call the same method and modify array */}];
于 2012-10-09T18:04:32.510 に答える