[ iOS / Swift ] 如何更改導覽列 (Navigation Bar) 的返回按鈕 (backBarButtonItem) 標題與圖片

使用導覽控制器 (NavigationController) 來管理畫面,畫面上方預設會有一個導覽列 (Navigation Bar),在 push 到下一個畫面時,都會自帶一個返回按鈕,這個返回按鈕的標題會根據你前個一畫面的標題來設定,我們也可以自己去更改返回按鈕的標題與圖片。


實作:

1. 更改返回按鈕 (backBarButtonItem) 標題:

要在下一個畫面的返回按鈕顯示更改後的標題,需要在前一個畫面就先設定好 barButtonItem 的標題,然後再設定給 navigationItem 的 backBarButtonItem。


override func viewDidLoad() {

    super.viewDidLoad()

        

    navigationItem.title = "測試專案"

        

    let barButtonItem = UIBarButtonItem(title: "返回", style: .plain, target: self, action: nil)

    navigationItem.backBarButtonItem = barButtonItem

}



成果:

2. 更改返回按鈕 (backBarButtonItem) 圖片:

使用 UINavigationBarAppearance 類別來設置 Navigation Bar 的外觀,先產生 UINavigationBarAppearance 物件 barAppearance。
設定 barAppearance 的 setBackIndicatorImage,把 backIndicatorImage 和 transitionMaskImage 都設為一樣的圖片。
將 barAppearance 設為目前畫面 navigationBar 的 standardAppearance。


override func viewDidLoad() {

    super.viewDidLoad()

    

    navigationItem.title = "測試專案"

    

    let barButtonItem = UIBarButtonItem(title: "返回", style: .plain, target: self, action: nil)

    navigationItem.backBarButtonItem = barButtonItem

    

    let image = UIImage(named: "backBarButtonImage")

    let barAppearance = UINavigationBarAppearance()

    barAppearance.setBackIndicatorImage(image, transitionMaskImage: image)

    navigationController?.navigationBar.standardAppearance = barAppearance

}



也可以在 AppDelegate 類別設定,讓整個 App 的返回按鈕都更換圖片。


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    

    let image = UIImage(named: "backBarButtonImage")

    let barAppearance = UINavigationBarAppearance()

    barAppearance.setBackIndicatorImage(image, transitionMaskImage: image)

    UINavigationBar.appearance().standardAppearance = barAppearance

    

    return true

}



成果:

留言