0

ナビゲーション バーにページ番号を表示する際の不整合

問題 #

最初のページに 0/20 が表示されます

を使用して 1/20 を表示するには

[self displaycurrentIndex:1];

viewDidload メソッドで。

2 ページ目には 1/20 が表示され、3 ページ目には 2/20 が表示され、4 ページ目には 3/20 が表示されます。

ページを逆順にめくると、最初のページに 1 of 20 ではなく 0 of 20 が表示されます。

発行番号

ページをクリックして裏返すとすぐに、現在のページ番号が変更されます。これは、ページが次のページを表示しようとしているときではなく、次のページが表示されたときにのみ次の現在のページ番号を表示する必要があるためです。

インスタンス displaycurrentIndex メソッドを使用して currentpagenumber を表示する

- (void) displaycurrentIndex:(NSUInteger)currentIndex {

self.navigationItem.title = [NSString stringWithFormat:
                             @"Page %i of %i",
                             currentIndex,
                             CGPDFDocumentGetNumberOfPages(PDFDocument)];
}

In viewDidload メソッド

 [self currentIndex:1];

pageviewcontroller データソース メソッドを使用して現在のページ番号を表示する

#pragma mark - UIPageViewControllerDataSource Methods

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController 
      viewControllerBeforeViewController:(UIViewController *)viewController {

    NSString *path = [[NSBundle mainBundle] pathForResource:@"pages" ofType:@"pdf"];

    NSURL *pdfurl = [NSURL fileURLWithPath:path];
    PDFDocument = CGPDFDocumentCreateWithURL((__bridge CFURLRef)pdfurl);

    contentViewController = [[ContentViewController alloc] initWithPDFAtPath:path];

    currentIndex = [modelArray indexOfObject:[(ContentViewController *)viewController page]];

    if (currentIndex == 0) {

        return nil;

    }

    contentViewController.page = [modelArray objectAtIndex:currentIndex - 1];

     [self displaycurrentIndex:currentIndex - 1];

    return contentViewController;

}

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

    NSString *path = [[NSBundle mainBundle] pathForResource:@"pages" ofType:@"pdf"];

    NSURL *pdfurl = [NSURL fileURLWithPath:path];
    PDFDocument = CGPDFDocumentCreateWithURL((__bridge CFURLRef)pdfurl);

    contentViewController = [[ContentViewController alloc] initWithPDFAtPath:path];

    currentIndex = [modelArray indexOfObject:[(ContentViewController *)viewController page]];

    if (currentIndex == totalPages - 1) {

        return nil;
    }
    contentViewController.page = [modelArray objectAtIndex:currentIndex + 1];

    [self displaycurrentIndex:currentIndex + 1];

    return contentViewController;

}

どうすればこれを修正できますか。

手伝ってくれてありがとう。

4

0 に答える 0