[英]NavigationBar of UIPageViewController not displaying title
UIPageViewController的导航栏未显示页码作为导航栏的标题。
- (void)viewDidLoad {
[super viewDidLoad];
//modelArray holds the page numbers
modelArray = [[NSMutableArray alloc] init];
for (int index = 1; index <= totalPages; index++) {
[modelArray addObject:[NSString stringWithFormat:@"%i", index]];
}
UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 45)];
navBar.tintColor = [UIColor colorWithRed:243.0/255.0 green:164.0/255.0 blue:0.0/255.0 alpha:1.0];
self.navigationItem.title = modelArray;
[self displayPageNumber:1];
thePageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl navigationOrientation: UIPageViewControllerNavigationOrientationHorizontal options:nil];
thePageViewController.delegate = self;
thePageViewController.dataSource = self;
thePageViewController.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
contentViewController = [[ContentViewController alloc] initWithPDF:PDFDocument];
contentViewController.page = [modelArray objectAtIndex:0];
NSArray *viewControllers = [NSArray arrayWithObject:contentViewController];
[thePageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
[self addChildViewController:thePageViewController];
[self.view addSubview:thePageViewController.view];
thePageViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
[thePageViewController didMoveToParentViewController:self];
_toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 960, self.view.bounds.size.width, 45)];
_toolbar.barStyle = UIBarStyleBlackOpaque;
_toolbar.tintColor = [UIColor colorWithRed:243.0/255.0 green:164.0/255.0 blue:0.0/255.0 alpha:1.0];
[self.view addSubview:_toolbar];
[self.view addSubview:navBar];
}
- (void) pageViewController:(PageViewController *)pageViewController willTurnToPageAtIndex:(NSUInteger)pageIndex {
[self displayPageNumber:pageIndex + 1];
}
- (void) displayPageNumber:(NSUInteger)pageNumber {
self.navigationItem.title = [NSString stringWithFormat:
@"Page %u of %u",
pageNumber,
CGPDFDocumentGetNumberOfPages(PDFDocument)];
}
感谢帮助。
这可能是因为您创建了navBar,将其添加到子视图,但更改了self.navigationItem
。 正如我在您的代码中看到的,这些是不同的导航栏。 尝试将navBar
保存到某个strong
属性并更改navBar
而不是self.navigationItem
PS在这一行中self.navigationItem.title = modelArray;
您为NSString分配NSMutableArray。 那很糟 :)
如果你只看到橙色的navBar
,那么你的self.navigationItem
就不显示了。 你需要你的viewController
是navigationController
的孩子,就像那样:
如果你这样做,那么你可以写self.navigationItem.title = @"123";
像这儿:
你会得到你想要的结果:
UPD:或者你可以这样做:
@interface MCViewController ()
@property (strong, nonatomic) UINavigationItem *navItem;
@property (strong, nonatomic) UINavigationBar *navBar;
@end
@implementation MCViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.navItem = [[UINavigationItem alloc] initWithTitle:@"TEST"];
self.navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
self.navBar.items = @[self.navItem];
[self.view addSubview:self.navBar];
}
@end
然后改变navItem
title
属性。
很简单。
这样做吧
_navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 45)];
_navBar.tintColor = [UIColor colorWithRed:243.0/255.0 green:164.0/255.0 blue:0.0/255.0 alpha:1.0];
UINavigationItem *title = [[UINavigationItem alloc] initWithTitle:[NSString stringWithFormat:
@"Page %i of %i",
pageNumber,
CGPDFDocumentGetNumberOfPages(thePDF)]];
[_navBar pushNavigationItem:title animated:NO];
希望它能帮到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.