gpt4 book ai didi

ios - 尝试处理 iOS 中的 "back"导航按钮操作

转载 作者:IT王子 更新时间:2023-10-29 07:32:22 24 4
gpt4 key购买 nike

我需要检测用户何时点击导航栏上的“后退”按钮,以便在发生时执行一些操作。我正在尝试通过这种方式手动设置此类按钮的操作:

[self.navigationItem.backBarButtonItem setAction:@selector(performBackNavigation:)];

- (void)performBackNavigation:(id)sender
{
// Do operations

[self.navigationController popViewControllerAnimated:NO];
}

我首先将该代码放在 View Controller 本身中,但我发现 self.navigationItem.backBarButtonItem 似乎是 nil,所以我将相同的代码移到了父 View Controller ,它将前者推送到导航堆栈。但我都无法让它发挥作用。我读过一些关于这个问题的帖子,其中一些人说选择器需要在父 View Controller 中设置,但对我来说它无论如何都不起作用......我做错了什么?

谢谢

最佳答案

使用 VIewWillDisappear 方法尝试这段代码来检测 NavigationItem 的后退按钮是否按下:

-(void) viewWillDisappear:(BOOL)animated
{
if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound)
{
// Navigation button was pressed. Do some stuff
[self.navigationController popViewControllerAnimated:NO];
}
[super viewWillDisappear:animated];
}

或者还有另一种方法可以获取导航后退按钮的操作。

为后退按钮的 UINavigationItem 创建自定义按钮。

例如:

In ViewDidLoad :

- (void)viewDidLoad 
{
[super viewDidLoad];
UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle:@"Home" style:UIBarButtonItemStyleBordered target:self action:@selector(home:)];
self.navigationItem.leftBarButtonItem=newBackButton;
}

-(void)home:(UIBarButtonItem *)sender
{
[self.navigationController popToRootViewControllerAnimated:YES];
}

swift :

override func willMoveToParentViewController(parent: UIViewController?) 
{
if parent == nil
{
// Back btn Event handler
}
}

关于ios - 尝试处理 iOS 中的 "back"导航按钮操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18824186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com