简体   繁体   English

导航栏的自定义后退按钮

[英]Custom Back Button for Navigation Bar

I made a category of UINavigationBar as follow: 我做了一个UINavigationBar的类别,如下所示:

UINavigationBar (UINavBar_Category)

I want to create custom back button using this. 我想使用此创建自定义后退按钮。

I can able to set image by following code: 我可以通过以下代码设置图像:

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[UIImage imageNamed:@"btn_back.png"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

Problem can not able to change title of back button. 问题无法更改后退按钮的标题。

My try 我的尝试

 - (void)didMoveToSuperview
{
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:lang(@"btnBack") style:UIBarButtonItemStylePlain target:nil action:nil];
    self.topItem.backBarButtonItem=backButton;
}

Help me to solve this! 帮我解决这个问题!

Thanks in advance 提前致谢

在此处输入图片说明

Try this code instead.. Here a button is first created , its title and image is set and then it is set as left bar button item of navigation controller. 请尝试使用此代码。.在此首先创建一个按钮,设置其标题和图像,然后将其设置为导航控制器的左栏按钮项。

UIButton *backBarButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 100, 29)];

[backBarButton setTitle:@"  Log Out" forState:UIControlStateNormal];
                [backBarButton setImage:[UIImage 
imageNamed:@"leftarrow_ipad.png"] forState:UIControlStateNormal];

[backBarButton addTarget:self action:@selector(backAction:) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backBarButton];

self.navigationItem.leftBarButtonItem = backBarButtonItem;

Try this 尝试这个

 -(void)viewWillAppear:(BOOL)animated
    {
        [super viewWillAppear:animated];
     if([self.navigationController.viewControllers objectAtIndex:0] != self)
        {
            UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 26)];
            [backButton setImage:[UIImage imageNamed:@"back.png"] forState:UIControlStateNormal]; // some image
            [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;

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

    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM