【发布时间】:2011-06-21 09:10:15
【问题描述】:
可能重复:
Find out if user pressed the back button in uinavigationcontroller?
我想在用户点击 UINavigationController 的左侧按钮(“返回”按钮)时播放声音。
如何检测到这一点?
【问题讨论】:
标签: cocoa-touch uinavigationcontroller
可能重复:
Find out if user pressed the back button in uinavigationcontroller?
我想在用户点击 UINavigationController 的左侧按钮(“返回”按钮)时播放声音。
如何检测到这一点?
【问题讨论】:
标签: cocoa-touch uinavigationcontroller
UINavigationController 有一个委托,每当视图控制器即将被推送到视图中时(以及之后),都会调用该委托。您可以简单地通过调用来使您的视图控制器成为委托(例如在 viewDidLoad 中):
[[self navigationController] setDelegate:self];
然后在你的视图控制器中实现navigationController:willShowViewController:animated:方法。
【讨论】:
另一个简单的方法是在 viewWillDisappear() 中实现你的声音:
- (void)viewWillDisappear:(BOOL)animated {
//play my sound here
}
或者更健壮的方法,以确保仅在按下后退按钮时播放声音(如果您有其他方式可以从导航堆栈中弹出视图)是子类化 UINavigationController 并放入自定义操作返回按钮的方法。 This page 为您提供了如何执行此操作的示例。
该示例基本上继承了 UINavigationController 并覆盖了
- (UIViewController *)popViewControllerAnimated:(BOOL)animated
按下后退按钮时调用的方法。
【讨论】: