私は現在、作成しようとしているアプリで停止しています。
1 つのビュー コントローラーで配列から 4 つの異なる画像とラベルをスクロールして表示できるページ ビュー コントローラーを作成しました。これはコードの実装です:
_pageTitles = @[@"One", @"Two", @"Three", @"Four"];
_pageImages = @[@"1.png", @"2.png", @"3.png",@"4.png"];
// Create page view controller
self.pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageViewController"];
self.pageViewController.dataSource = self;
PageContentViewController *startingViewController = [self viewControllerAtIndex:0];
NSArray *viewControllers = @[startingViewController];
[self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
// Change the size of page view controller
self.pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 30);
[self addChildViewController:_pageViewController];
[self.view addSubview:_pageViewController.view];
[self.pageViewController didMoveToParentViewController:self];
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
NSUInteger index = ((PageContentViewController*) viewController).pageIndex;
if ((index == 0) || (index == NSNotFound)) {
return nil;
}
index--;
return [self viewControllerAtIndex:index];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
NSUInteger index = ((PageContentViewController*) viewController).pageIndex;
if (index == NSNotFound) {
return nil;
}
index++;
if (index == [self.pageTitles count]) {
return nil;
}
return [self viewControllerAtIndex:index];
}
- (PageContentViewController *)viewControllerAtIndex:(NSUInteger)index
{
if (([self.pageTitles count] == 0) || (index >= [self.pageTitles count])) {
return nil;
}
// Create a new view controller and pass suitable data.
PageContentViewController *pageContentViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageContentViewController"];
pageContentViewController.imageFile = self.pageImages[index];
pageContentViewController.titleText = self.pageTitles[index];
pageContentViewController.pageIndex = index;
return pageContentViewController;
}
- (NSInteger)presentationCountForPageViewController: (UIPageViewController*)pageViewController
{
return [self.pageTitles count];
}
- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController
{
return 0;
}
配列から完全に削除せずに 4 つのページすべてではなく、アプリが起動するたびに 3 つのページのみを表示したいのですが、ここに問題があります。最初に中間ページを表示し、選択ページの前後のページのみを表示し、最終ページを非表示にする条件を設定したいと思います。
例えば
ページ 3 が選択されている場合、ページ 2、3、4 がページ ビュー内に表示されます。ページ 2 が選択されている場合、ページ 1、2、3 がページ ビュー内に表示されます。
これを理解するために簡単な用語に入れてみましたが、どうやってこれを行うのか理解できません。私はこれを理解しようと一日中過ごしましたが、運がありませんでした!
誰かが私を正しい方向に向けてもらえますか?