简体   繁体   English

导航栏后退按钮不起作用

[英]Navigation Bar Back Button not working

I am trying add a custom back button so that I can perform some tasks before popping the controller. 我正在尝试添加自定义后退按钮,以便可以在弹出控制器之前执行一些任务。 But no matter how hard I tried this function bind with back button doesn't work. 但是,无论我多么努力尝试将此功能与后退按钮绑定都无法正常工作。 I am adding some code to understand 我添加一些代码来了解

-(void)customizeNavigationBar
{
    self.navigationController.navigationBarHidden = NO;
    self.navigationItem.title = @"Video Call";

   UIBarButtonItem *backButton = [[UIBarButtonItem alloc] 
              initWithTitle:@" " style:UIBarButtonItemStylePlain 
              target:self action:@selector(didBackBtnTap)];
   [self.navigationItem setBackBarButtonItem:backButton];
}

and this is the function, which is not calling at all, 这是根本不调用的函数,

-(void)didBackBtnTap
{
    [self popToProfileScreen];
}

Please suggest any solution, Thanks in advance. 请提出任何解决方案,谢谢。

使用leftbarbutton项而不是setBackBarButtonItem

self.navigationItem.leftBarButtonItem = backButton;

When you use the setLeftBarButtonItem or setBackBarButtonItem , it will take effect on the viewController you're pushing to but not the current one. 当您使用setLeftBarButtonItemsetBackBarButtonItem ,它将对您要推送到的viewController生效,但对当前的viewController无效。 That's why you need to directly set the current leftBarButtonItem 这就是为什么您需要直接设置当前的leftBarButtonItem

另一个选择是在viewWillDisappear中编写您的自定义代码。

Use this code 使用此代码

UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
backButton.frame = CGRectMake(0, 0, 15, 15);
[backButton setImage:[UIImage imageNamed:@"backButtonImage"] forState:UIControlStateNormal];
[backButton setTitle:@"Back" forState:UIControlStateNormal];
backButton.imageEdgeInsets = UIEdgeInsetsMake(0, -10, 0, 0);
[backButton addTarget:self action:@selector(backButtonPressed) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];

Add an image(15*15, @1x @2x @3x) like back button of NavigationBar in xcasstes backButtonImage 在xcasstes backButtonImage中添加类似于 NavigationBar的后退按钮的图像(15 * 15,@ 1x @ 2x @ 3x)

- (void)backButtonPressed {}

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

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