首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未显示backBarButtonItem

未显示backBarButtonItem
EN

Stack Overflow用户
提问于 2015-08-10 22:43:43
回答 3查看 2.2K关注 0票数 1

我知道当另一个视图控制器被推送到堆栈上时,viewcontroller's导航项的backBarButtonItem就会显示出来,这是从顶部数第二个viewcontroller

我有一个视图控制器A,它在viewDidLoad中有以下内容

代码语言:javascript
复制
{
 [super viewDidLoad];
 self.navigationController.navigationBarHidden = NO;
 [self.navigationItem setBackBarButtonItem:[UIBarButtonItem itemWithImageNamed:@"ic_header_slide" selectedImage:nil target:nil action:nil]];
}

当我按下viewcontroller B时,这个自定义的后退按钮不会显示,相反,我看到的是iOS创建的默认后退按钮。

A扩展了UITableViewController,B扩展了UIViewController。我没有在这些navigationItem中设置leftBarButtonItemleftBarButtonItemsrightBarButtonItemrightBarButtonItems

编辑我读过关于设置leftBarButtonItems的内容。在B上设置works项可以工作。但我认为在A上设置backBarButtonItem是正确的方法。文档中也提到了这一点,但在我的情况下不起作用。我想问backBarButtonItem中是否有bug,或者我对它的工作方式有一些误解,我做得不正确。

EN

回答 3

Stack Overflow用户

发布于 2015-08-10 22:56:18

要隐藏导航栏的默认后退按钮,请使用

代码语言:javascript
复制
 self.navigationItem.hidesBackButton=TRUE;

也可以使用以下方法添加自定义BarButtons。

代码语言:javascript
复制
- (NSArray*)getLeftNavButtons:(NSString*)image andTarget:(id)target andFrame:(CGRect)frame andSpace:(int)fixedSpace
{
   UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
   button.frame = frame;
   button.clipsToBounds = YES;
   [button setBackgroundImage:[UIImage imageNamed:image] forState:UIControlStateNormal];
   [button addTarget:target action:@selector(leftNavBtnClicked) forControlEvents:UIControlEventTouchUpInside];
   UIBarButtonItem *barButton = [[UIBarButtonItem alloc]initWithCustomView:button];

   if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7"))
   {
     UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
                                       target:nil action:nil];
     negativeSpacer.width = fixedSpace;
     return @[negativeSpacer,barButton];
   }
   else{
     return @[barButton];
   }

   return @[barButton];
}
票数 0
EN

Stack Overflow用户

发布于 2015-08-10 23:00:19

只需覆盖默认设置

代码语言:javascript
复制
self.navigationItem.hidesBackButton = YES;
UIBarButtonItem *back = [[UIBarButtonItem alloc]init];
back.title = @"Pick Me";
back.image = @"Your image";
[self.navigationItem setLeftBarButtonItem:back];
票数 0
EN

Stack Overflow用户

发布于 2015-08-11 17:21:26

设置右侧栏按钮项

代码语言:javascript
复制
 self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc]init];

    UIImage *img1=[UIImage imageNamed:@"edit"];
    CGRect frameimg1 = CGRectMake(0, 0, img1.size.width, img1.size.height);
    UIButton *signOut=[[UIButton alloc]initWithFrame:frameimg1];
    [signOut setBackgroundImage:img1 forState:UIControlStateNormal];
    [signOut addTarget:self action:@selector(btnEditClicked:)
      forControlEvents:UIControlEventTouchUpInside];
//    [signOut setShowsTouchWhenHighlighted:YES];

    UIBarButtonItem *barButton=[[UIBarButtonItem alloc]initWithCustomView:signOut];
    self.navigationItem.rightBarButtonItem=barButton;

设置左栏按钮项

代码语言:javascript
复制
  UIImage *img11=[UIImage imageNamed:@"home"];
    CGRect frameimg11 = CGRectMake(0, 0, img11.size.width, img11.size.height);
    UIButton *signOut1=[[UIButton alloc]initWithFrame:frameimg11];
    [signOut1 setBackgroundImage:img11 forState:UIControlStateNormal];
    [signOut1 addTarget:self action:@selector(showLeftMenuPressed:)
      forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *barButton1=[[UIBarButtonItem alloc]initWithCustomView:signOut1];
    self.navigationItem.leftBarButtonItem=barButton1;

    self.navigationController.navigationBar.barTintColor=ColorNav;
    self.navigationController.navigationBar.translucent=FALSE;

设置导航标题和颜色

代码语言:javascript
复制
   self.title = titletext;
   [[[self navigationController] navigationBar]setTitleTextAttributes:@{NSForegroundColorAttributeName: textColor}];

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31922558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档