0

私は本から iOS プログラミングを学んでおり、iBooks と同様に、ページを別のページに切り替えるアプリをコーディングしました。しかし、シミュレーターで実行すると、左または右にスワイプすると、ページがまったく回転したり遷移したりしません。どうしてか分かりません。

関連すると思われる私のコードは以下のとおりです。何か見逃した場合に備えて、プロジェクト全体も添付しました。基本的に、UIViewController のコンテンツである UIWebview があります。PageView のデータ ソースとして機能するクラスにあるモデルからデータが取り込まれます。適切な(プロトコル)メソッドに移動するView Controllerに応じて、移動するView Controllerのインデックスに従ってWebViewのコンテンツを設定します。

しかし、次のように機能しません。

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
    NSUInteger index = [self indexOfViewController:(ContentViewController *)viewController];

    if (index == 0 || index == NSNotFound) {
        return nil;
    }
    else {
        index--;
        return [self viewControllerAtIndex:index];
    }
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
    NSUInteger index = [self indexOfViewController:(ContentViewController *)viewController];

    if (index == NSNotFound) {
        return nil;
    }
    else {
        index--;
        return [self viewControllerAtIndex:index];
    }
}


- (void)viewDidLoad {
    [super viewDidLoad];
    [self createContentPages];

    NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumber numberWithInteger:UIPageViewControllerSpineLocationMin]
        forKey:UIPageViewControllerOptionSpineLocationKey];

    _pageController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl
        navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
        options: options];

    _pageController.dataSource = self;
    [[_pageController view] setFrame:[[self view] bounds]];

    ContentViewController *initialViewController = [self viewControllerAtIndex:0];

    NSArray *viewControllers = [NSArray arrayWithObject:initialViewController];

    [_pageController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward
        animated:NO
        completion:nil];

    [self addChildViewController:_pageController];

    [[self view] addSubview:[_pageController view]];

    [_pageController didMoveToParentViewController:self];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)createContentPages {
    NSMutableArray *pageStrings = [[NSMutableArray alloc] init];

    for (int i = 1; i <= 10; i++) {
        NSString *contentString = [[NSString alloc] initWithFormat:@"<html><head></head><body><h1>Chapter %d</h1><p>This is the page %d of content displayed using UIPageViewController in iOS 6.</p></body></html>", i, i];
        [pageStrings addObject:contentString];
    }

    self.pageContent = [[NSArray alloc] initWithArray:pageStrings];
}

// Return the data view controller for the given index
- (ContentViewController *)viewControllerAtIndex:(NSUInteger)index {
    if (([self.pageContent count] == 0) || index >= [self.pageContent count]) {
        return nil;
    }
    else {
        UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];

        ContentViewController *dataViewController = [storyBoard instantiateViewControllerWithIdentifier:@"contentView"];

        dataViewController.dataObject = self.pageContent[index];

        return dataViewController;
    }
}

- (NSUInteger)indexOfViewController:(ContentViewController *)viewController {
    return [self.pageContent indexOfObject:viewController.dataObject];
}

プロジェクト全体: http://cl.ly/1B0l3Z1H1616

4

1 に答える 1

1

の中に

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController 

メソッド、あなたが持っている

index--

に変更してみてください

index++
于 2012-12-12T21:13:51.670 に答える