如何在 Swift 中设置返回按钮文本?


默认情况下,视图控制器在 iOS 中的返回按钮上显示“返回”文本和一个箭头。但是,您可以为返回按钮项设置自定义标题和图标。让我们来看一个如何在 Swift 中设置自定义返回按钮文本的示例。

在本例中,我们将设置两个不同的视图控制器,以查看返回按钮的默认行为以及如何设置自定义返回按钮文本。

第一个视图控制器设置

在此步骤中,我们将设置第一个视图控制器以推送第二个视图控制器。以下是第一个视图控制器的代码。

示例

import UIKit
class FirstViewController: UIViewController {
   private let clickButton = UIButton()
   
   override func viewDidLoad() {
      super.viewDidLoad()
      initialSetup()
   }
   
   private func initialSetup() {
  
      // basic setup
      view.backgroundColor = .white
      navigationItem.title = "First Controller"
     
      // button customization
      clickButton.backgroundColor = .darkGray
      clickButton.setTitle("Go to next controller", for: .normal)
      clickButton.setTitleColor(.white, for: .normal)
      clickButton.layer.cornerRadius = 8
      clickButton.addTarget(self, action: #selector(handleClickButtonTapped), for: .touchUpInside)
     
      // adding the constraints to button
      view.addSubview(clickButton)
      clickButton.translatesAutoresizingMaskIntoConstraints = false
      clickButton.heightAnchor.constraint(equalToConstant: 50).isActive = true
      clickButton.widthAnchor.constraint(equalToConstant: 250).isActive = true
      clickButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
      clickButton.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
   }
   
   @objc private func handleClickButtonTapped() {
      let secondController = SecondViewController()
      self.navigationController?.pushViewController(secondController, animated: true)
   }
}

输出

第二个视图控制器设置

在此步骤中,我们将设置第二个视图控制器。首先,我们将看到返回按钮的默认行为。以下是设置第二个视图控制器的代码。

示例

import UIKit
class SecondViewController: UIViewController {
   override func viewDidLoad() {
      super.viewDidLoad()
      initialSetup()
   }
   
   private func initialSetup() {
   
      // basic setup
      view.backgroundColor = .white
      navigationItem.title = "Second Controller"
   }
}

输出

在上面的输出中,您可以看到返回按钮的默认样式。为了更改返回按钮文本,您可以按照下一步操作。

设置返回按钮文本

在此步骤中,我们将设置自定义返回按钮文本。要更改返回按钮文本,您可以根据您的需求创建具有基本自定义的自定义 UIButton。之后,您可以使用 UIBarButtonItem(customView:) 类分配自定义返回按钮。以下是使用此方法的代码。

示例

import UIKit
class SecondViewController: UIViewController {
   private let backButton = UIButton(type: .system)
   override func viewDidLoad() {
      super.viewDidLoad()
      initialSetup()
   }
   private func initialSetup() {
   
      // basic setup
      view.backgroundColor = .white
      navigationItem.title = "Second Controller"
     
      // button customization
      backButton.setImage(UIImage(systemName: "chevron.backward"), for: .normal)
      backButton.setTitle("Return", for: .normal)
      backButton.titleLabel?.font = UIFont.systemFont(ofSize: 17, weight: .medium)
      backButton.addTarget(self, action: #selector(handleBackButtonTapped), for: .touchUpInside)
      let backButtonItem = UIBarButtonItem(customView: backButton)
      self.navigationItem.leftBarButtonItem = backButtonItem
   }
   @objc private func handleBackButtonTapped() {
      self.navigationController?.popViewController(animated: true)
   }
}

输出

在上面的示例中,您可以看到我们如何设置自定义返回按钮文本。也可以使用自定义按钮类型自定义返回按钮。

使用 backBarButtonItem 属性

使用此属性,您可以更改从初始视图控制器推送到导航堆栈中的所有视图控制器的默认返回按钮文本。您可以按照以下步骤更改默认返回按钮文本。

  • 步骤 1 − 实现视图控制器的 viewWillAppear 方法。

  • 步骤 2 − 使用自定义文本创建 UIBarButtonItem 对象并将其分配给 backBarButtonItem 属性。

  • 步骤 3 − 将 backBarButtonItem 属性分配给视图控制器类的 navigationItem 属性。

这是一个示例

override func viewWillAppear(_ animated: Bool) {
   super.viewWillAppear(animated)
   self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "Return", style: .plain, target: nil, action: nil)
}

在此示例中,覆盖了 UIViewController 的 viewWillAppear 方法,并将 navigationItem 属性的 backBarButtonItem 属性设置为创建具有适当文本的 UIBarButtonItem。通过以这种方式设置 backBarButtonItem 属性,更改了导航栏中显示的返回按钮的文本,无论何时将此视图控制器移动到导航堆栈中。

通过 UINavigationController 推送到导航堆栈中的所有 UIViewControllers 都兼容此方法。如果您使用其他类型的导航(如标签栏),则需要使用不同的技术来更改返回按钮文本。

结论

您可以通过使用 UIBarButtonItem(customView:) 类将带文本的自定义按钮分配给返回按钮。此类返回一个条形按钮项并将其分配给视图控制器的 navigationItem 属性。

您还可以使用视图控制器类的 navigationItem.backBarButtonItem 属性为返回按钮设置自定义文本。

更新于: 2023-03-27

2K+ 浏览量

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.