Ios RightBarButtonItem仅显示为不活动
我在尝试将刷新按钮显示为RightBarButtonim时遇到了一个奇怪的问题 简而言之,我已经实现了它,但在运行应用程序时看不到任何东西。但是,当我单击情节提要Ios RightBarButtonItem仅显示为不活动,ios,uinavigationbar,rightbarbuttonitem,Ios,Uinavigationbar,Rightbarbuttonitem,我在尝试将刷新按钮显示为RightBarButtonim时遇到了一个奇怪的问题 简而言之,我已经实现了它,但在运行应用程序时看不到任何东西。但是,当我单击情节提要调试-->视图调试-->捕获视图层次结构时。我可以看到一个刷新按钮,似乎不活动和隐藏。我不知道为什么 viewcontrol实际上是通过自定义的pageviewcontroller推入的 - (void)viewDidLoad { [super viewDidLoad]; self.pageController =
调试-->视图调试-->捕获视图层次结构时
。我可以看到一个刷新按钮,似乎不活动和隐藏。我不知道为什么
viewcontrol实际上是通过自定义的pageviewcontroller推入的
- (void)viewDidLoad {
[super viewDidLoad];
self.pageController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
self.pageController.dataSource = self;
[[self.pageController view] setFrame:[[self view] bounds]];
TNViewController *initialViewController = [self viewControllerAtIndex:currentIndex];
UIBarButtonItem *refreshButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh
target:self action:@selector(refreshClicked:)];
initialViewController.navigationItem.rightBarButtonItem = refreshButton;
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:initialViewController];
NSArray *viewControllers = [NSArray arrayWithObject:navigationController];
[self.pageController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
[self addChildViewController:self.pageController];
[[self view] addSubview:[self.pageController view]];
[self.pageController didMoveToParentViewController:self];
for (UIView *subview in self.pageController.view.subviews) {
if ([subview isKindOfClass:[UIPageControl class]]) {
UIPageControl *pageControl = (UIPageControl *)subview;
pageControl.pageIndicatorTintColor = [UIColor blackColor];
pageControl.currentPageIndicatorTintColor = [utils colorFromHexString:@"#AA3635"];
pageControl.numberOfPages = _news.count;
pageControl.backgroundColor = [UIColor whiteColor];
}
}
self.edgesForExtendedLayout = UIRectEdgeTop;
}
请问我缺少什么?因为要将其添加到uiviewcontroller,所以需要创建UINavigationBar、UINavigationItem和UIButton。然后将UIButton添加到UINavigationItem,然后将UINavigationItem添加到UINavigationBar:
_navBar = [[UINavigationBar alloc] init];
[_navBar setFrame:CGRectMake(0,0,self.view.bounds.size.width,52)];
[self.view addSubview:_navBar];
UINavigationItem *navItem = [[UINavigationItem alloc]initWithTitle:@""];
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refreshClicked:)];
[navItem setLeftBarButtonItem:barButton];
[_navBar setItems:@[navItem]];
此代码来自以下答案:
希望这有帮助。在实例化UINavigation控制器后,您是否尝试添加它?我终于发现了问题。在这种情况下非常令人困惑的是,实际的
TNViewcontroller
被包装在TNPViewController
中。后者是PageViewController。我一直试图在TNViewController
而不是TNPViewController
上添加导航项
这是正确的方法,而且有效
家长视图控制器:
TNPViewController *tnp = [[TNPViewController alloc] initWithNews:news index:indexPath.row];
[[self navigationController] pushViewController:tnp animated:YES];
TNPViewController:
- (void)viewDidLoad {
[super viewDidLoad];
UIBarButtonItem *refreshButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh
target:self action:@selector(refreshClicked:)];
self.navigationItem.rightBarButtonItem = refreshButton;
}
但我首先使用的是UINavigationController,对吗?为什么我要手动添加这些?我还没来得及试一试。我想你还不能评论,因为你太新了。新来者通常会感到尴尬。在您的回答中,您没有指定我必须实例化UINavigation控制器。请问我错过了什么?请随意编辑主要答案,我会看到的。