我怎么能显示导航栏自定义图像返回按钮,而不是默认的按钮,其通过导航栏显示自己(How can I s

2019-07-31 05:04发布

在导航到具有实现导航控制器的应用程序的任何视图,它显示了一个后退按钮前一视图。 有没有一种方法,我可以使用,而不是默认的自定义图像?

Answer 1:

是的你可以。

您可以控制标准的返回按钮的外观通过设置它的导航项目的回栏按钮项时,另一个视图控制器在给定的视图控制器的顶推(可以自定义标题或使用图像):

UIBarButtonItem *btn = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:nil action:nil];
self.navigationItem.backBarButtonItem = btn;
[btn release];

UIBarButtonItem *btn = [[UIBarButtonItem alloc] initWithImage:yourImage style:UIBarButtonItemStyleBordered target:nil action:nil];
self.navigationItem.backBarButtonItem = btn;
[btn release];

注意 :您在可能有其他视图控制器(S)“父”视图控制器配置此在它之上推。 当一些视图控制器是在上面在“父”和后退按钮的外观完成配置改变。 叩击背部按钮有望带给你回来。


您也可以创建自己的UIBarButtonItem并将其设置为leftButtonItem当前视图控制器上的导航栏上:

UIBarButtonItem *btn = [[UIBarButtonItem alloc] initWithImage:yourImage style:UIBarButtonItemStyleBordered target:self action:@selector(yourMethod:)];
self.navigationItem.leftBarButtonItem = btn;
[btn release];

注意 :在这种情况下,背面/左栏按钮项被改变为当前视图控制器(当它是在顶部)。 您必须实现yourMethod:方法。 如果您只是想按钮回去,你必须处理通过调用弹出认为自己控制器[self.navigationController popViewControllerAnimated:YES];



Answer 2:

我发现,没有一个解决方案的实际解决BACK UIBarButton还提供隐蔽的行为,如果视图控制器是根。

-(void)popViewControllerWithAnimation {
[self.navigationController popViewControllerAnimated:YES];
}

- (void)viewWillAppear:(BOOL)animated
{
   [super viewWillAppear:animated];
   if([self.navigationController.viewControllers objectAtIndex:0] != self)
   {
       UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 26, 26)];
       [backButton setImage:[UIImage imageNamed:@"back"] forState:UIControlStateNormal];
       [backButton setShowsTouchWhenHighlighted:TRUE];
       [backButton addTarget:self action:@selector(popViewControllerWithAnimation) forControlEvents:UIControlEventTouchDown];
       UIBarButtonItem *barBackItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
       self.navigationItem.hidesBackButton = TRUE;
       self.navigationItem.leftBarButtonItem = barBackItem;
   }
}


Answer 3:

它几乎像一个后退按钮。 与过渡动画的异常(该按钮被窃听和之后当前视图被弹出导航到右侧)。

正确的做法是让一个类别。

@interface UINavigationBar (MyNavigationBar)  
-(void)drawRect:(CGRect)rect; 
@end

@implementation UINavigationBar (MyNavigationBar)
-(void)drawRect:(CGRect)rect { 
UIImage *image = [UIImage imageNamed:@"....."];  
[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 


文章来源: How can I show a custom image in navigation bar back button instead of default buttons which are shown by nav bar itself