2012-05-09 35 views
0

的ViewController名字是Mainviewcontroller中,我在做所有的AVAudioplayer的行動。代表AVAudioPlayer爲audioPlayerEndInterruption方法

如果.h文件我做

@class MainViewController; 

@protocol MainViewControllerDelegate 

-(void)audioPlayerBeginInterruption:(AVAudioPlayer *)audioPlayer; 

-(void)audioPlayerEndInterruption:(AVAudioPlayer *)audioPlayer; 

@end 

@interface MainViewController : UIViewController <UIActionSheetDelegate, InfoDelegate, AVAudioPlayerDelegate> 

我是應該做的AVAudioPlayerDelegateMainViewControllerDelegate上述聲明IM困惑

,如果我做@protocolAVAudioPlayerDelegate然後我得到以黃色警告說明忽略AVAudioPlayer的重複協議定義

當我還沒有定義@protocolAVAudioPlayer其他地方。

另一個困惑我已經是I M應該申報.h文件這些方法首先才把M檔實現

-(void)audioPlayerBeginInterruption:(AVAudioPlayer *)audioPlayer; 

-(void)audioPlayerEndInterruption:(AVAudioPlayer *)audioPlayer; 

請幫助。

回答

2

我認爲你在這裏誤用了@protocol結構。您可以繼續並刪除整個@protocol塊並實施您的課程。您只需indcate類是這樣AVAudioPlayer實例的委託:

@interface MainViewController : UIViewController <UIActionSheetDelegate, InfoDelegate, AVAudioPlayerDelegate> 

然後,當你實例化你的AVAudioPLayer對象,一定要指定MainViewController作爲代表:

audioPlayInstance.delegate = self; 

最後,實現你想在你的AVAudioPlayer實例上調用的兩個方法(我稱它爲上面的audioPlayInstance)。你只需要把這些放在你的.m文件中,而不是你的頭文件。這些方法的頭聲明由AVAudioPlayer.h類文件處理。

祝你好運!

+0

我沒有任何AVAudioPlayer.h類文件 – user1120133

+0

您不明確包含該文件,當您包含AVFramework時,它將被拉入。以下是詳細信息:http://developer.apple.com/library/mac/#documentation/AVFoundation/Reference/AVAudioPlayerClassReference/Reference/Reference.html – MystikSpiral

+0

非常感謝。過去兩天我一直在爲此而苦苦掙扎。我非常感謝你的幫助。非常感謝。 – user1120133