如何在 Swift 中自定义 backBarButtonItem 的操作(iOS 14.4)

问题描述 投票:0回答:2

我的应用程序有一个

UINavigationController
作为初始视图控制器,并且
RootViewControler
作为
UINavigationController
的根视图控制器。

然后我创建了

FirstViewController
SecondViewController
,这样我们就可以从
RootViewController
导航到
FirstViewController
,然后导航到
SecondViewController

问题是如何自定义导航栏上

backBarButtonItem
的操作。默认
backButtonItem
弹出顶视图控制器,但我想在弹出之前显示一些警报。

我尝试在

viewDidLoad
中为
RootViewController
FirstViewController
SecondViewController
添加以下代码,但我仍然具有后退按钮的默认行为。

override func viewDidLoad() {
    super.viewDidLoad()
    
    navigationItem.backBarButtonItem = UIBarButtonItem(title: "Hello", style: .plain, target: self, action: #selector(backButtonTapped))
}

想知道我错过了什么吗?

谢谢。

ios swift uinavigationcontroller ios14 backbarbuttonitem
2个回答
2
投票

您无法自定义后栏按钮项目的 action。它只做一件事:返回。如果您想编写自己的按钮来执行其他操作,请使用左栏按钮项目(并可能抑制后栏按钮项目)。


0
投票
导航栏中显示的“后退”按钮是堆栈中“上一个”视图控制器的按钮。因此,要自定义第二个控制器的按钮,您需要修改

第一个控制器的按钮。 此外,应该在将控制器推入堆栈之前修改 backBarButtonItem。 viewDidLoad

已经太晚了。你需要从

init开始做。

© www.soinside.com 2019 - 2024. All rights reserved.