ナビゲーション バーにページ番号を表示する際の不整合
問題 #
最初のページに 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;
}
どうすればこれを修正できますか。
手伝ってくれてありがとう。