如何判断 UINavigationControllerStack 中的后退按钮何时被按下

发布于 2024-08-27 09:07:50 字数 124 浏览 4 评论 0原文

是否可以检查 UINavigationController 堆栈中何时按下后退按钮?我尝试将操作和目标添加到 self.navigationItem.backBarButtonItem 但无济于事。

有人有解决办法吗?

Is it possible to check when the back button is pressed in a UINavigationController stack? I've tried adding a action and target to self.navigationItem.backBarButtonItem to no avail.

Anyone have any solutions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

美人迟暮 2024-09-03 09:07:50

你可以尝试我的方法:

在你的ViewController中写入:

UIBarButtonItem *backBt = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"imageNameOfBackButton"] style:UIBarButtonItemStyleBordered target:self action:@selector(backBt_touch:)];
self.navigationItem.leftBarButtonItem = backBt;

和操作方法:

- (void)backBt_touch:(id)sender {
  [self.navigationController popViewControllerAnimated:YES];
}

你必须拍一张你想要的后退按钮的照片。

viewController弹出时隐藏后退按钮的动画和iOS的动画不一样!

P/s: 在此处输入图像描述
我是从模拟器中得到的。希望有用! :)

You can try my way:

Write in your ViewController:

UIBarButtonItem *backBt = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"imageNameOfBackButton"] style:UIBarButtonItemStyleBordered target:self action:@selector(backBt_touch:)];
self.navigationItem.leftBarButtonItem = backBt;

And action method:

- (void)backBt_touch:(id)sender {
  [self.navigationController popViewControllerAnimated:YES];
}

You have to take a photo of back button you want.

Animation of hiding back button when viewController is popped is not the same animation of iOS!

P/s: enter image description here
I've get it from simulator. Hope it useful! :)

虫児飞 2024-09-03 09:07:50

解决这个问题的一种方法是重写 UIViewController 中的 viewWillDisappear ,该控制器在按下后退按钮时可见:

- (void)viewWillDisappear:(BOOL)animated {
    if (self.isMovingFromParentViewController) {
        // handle back button press
    }
}

显然,这不会直接拦截后退按钮本身的按下,但它为您提供了那时有机会执行逻辑。

One way to get at this would be to override viewWillDisappear in the UIViewController that is visible when the back button is pressed:

- (void)viewWillDisappear:(BOOL)animated {
    if (self.isMovingFromParentViewController) {
        // handle back button press
    }
}

Obviously this doesn't directly intercept the press on the back button itself, but it gives you a chance to perform logic at that time.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文