以编程方式向UINavigationBar添加后退按钮?

我使用以下代码在我的应用程序中实现导航栏。 (当我使用push segue时我的应用程序崩溃所以我需要一个模态segue意味着在调用模态segue后隐藏导航栏)

UINavigationBar *navbar = [[UINavigationBar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)]; //do something like background color, title, etc you self [self.view addSubview:navbar]; 

有没有人知道我可以使用上述代码的任何方法来实现导航栏中的后退按钮function?

使用下面的代码在导航栏的左侧添加后退按钮。在导航栏上添加UIBarButtonItem。

 UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(backBtnClicked:)]; self.navigationItem.leftBarButtonItem = backButton; 

使用下面的代码在左侧添加后退按钮

  UINavigationBar *navbar = [[UINavigationBar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)]; //do something like background color, title, etc you self [self.view addSubview:navbar]; UINavigationItem *item = [[UINavigationItem alloc] init]; navbar.items= @[item]; UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(backBtnClicked:)]; item.leftBarButtonItem = backButton; 

添加带图像的后退按钮:

 UIButton *backButton = [[UIButton alloc] initWithFrame: CGRectMake(0, 0, 70.0f, 21.0f)]; UIImage *backImage = [UIImage imageNamed:@"backBtn"]; [backButton setImage:backImage forState:UIControlStateNormal]; [backButton setTitleEdgeInsets:UIEdgeInsetsMake(10.0, 10.0, 10.0, 0.0)]; [backButton setTitle:@"Back" forState:UIControlStateNormal]; [backButton addTarget:self action:@selector(backButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton]; UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; [negativeSpacer setWidth:-15]; self.navigationItem.leftBarButtonItems = [NSArray arrayWithObjects:negativeSpacer,backButtonItem,nil]; 

我认为BackButton比LeftButton更好:

 UIBarButtonItem *backBtn = [[UIBarButtonItem alloc] init]; [desVC.navigationItem setBackBarButtonItem:backBtn]; 

关于后退按钮,正确的方法不是创建自己的。

UINavigationItem类对此有适当的支持:

  • func setHidesBackButton(_:animated:)
  • var leftItemsSupplementBackButton: Bool

因此,如果要在左侧添加自定义按钮,只需将leftItemsSupplementBackButton设置为true

或者打电话

self.navigationItem.setHidesBackButton(false, animated:false)