see*_*ish 13 iphone objective-c uiviewcontroller ios
我仍然是Objective C的新手,我想知道有关viewDidDisappear的一些事情.我有一个播放声音的应用程序(使用AVAudioPlayer),我想在切换视图时停止声音.
如果我在视图控制器实现中执行此操作:
- (void)viewDidDisappear:(BOOL)animated {
[self.audioPlayer stop];
}
Run Code Online (Sandbox Code Playgroud)
它工作正常.但是我脑子里的小程序员说我没有正确使用它.我很确定你应该使用布尔参数来调用viewDidDisappear,而不是仅仅指定(BOOL)动画; 此外,在我的视图切换中有一些动画会很好...然后再次,这可能是一个完全不同的讨论!
那么,我做错了什么,我将如何正确使用它?我是否必须将呼叫链接为按钮动作?实际声明函数本身的正确播放在哪里?谢谢.
pet*_*ine 18
我实现了viewDidDisappear:(BOOL)animated 广泛,随着viewWillAppear,viewWillDisappear以及viewWillDisappear实现该方法的主要原因是使您的视图控制器在活动中做一些事情,比如viewDidDisappear你不调用这个方法,但是你的应用程序将调用您的视图控制器做什么来实现那里.由于这是继承方法,只要确保可以完成超类中所有继承的实现,就可以实现它viewDidDisappear.所以,我建议你改变你的代码:
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:(BOOL)animated]; // Call the super class implementation.
// Usually calling super class implementation is done before self class implementation, but it's up to your application.
[self.audioPlayer stop];
}
Run Code Online (Sandbox Code Playgroud)
Ano*_*mie 11
- (void)viewDidDisappear:(BOOL)animated是方法声明,而不是任何类型的调用.当视图控制器被操纵时,UIKit调用该方法本身; 您不需要自己调用它,除非您编写自己的代码使视图控制器出现并通过直接操作它们控制的视图而消失(例如,如果您因某种原因重写UINavigationController).
但是你做错了什么:你必须[super viewDidDisappear:animated]在你的实现中调用某个地方,否则事情可能会中断.