Вам потребуется сохранить ссылку на объект appSoundPlayer
в вашем RootViewController и передать его каким-либо образом в подробный вид при загрузке.
На самом деле BOOL playing
не требуется, посколькуэто свойство AVAudioPlayer , и вы можете получить к нему доступ в любое время.
RootViewController.h
@interface RootViewController : UIViewController {
AVAudioPlayer *_appSoundPlayer;
// Declare the other iVars
}
@property (nonatomic, retain) AVAudioPlayer *appSoundPlayer;
@end
RootViewController.m
@synthesize appSoundPlayer = _appSoundPlayer;
- (void)dealloc {
[self setAppSoundPlayer:nil];
// Dealloc the other properties that you may have
[super dealloc];
}
/*
** Your code
*/
// When presenting the detail view
- (void)openDetailView {
DetailPageViewController *viewController = [[DetailPageViewController alloc] initWithParentViewController:self];
.
.
.
// Present the view controller
}
На вашем DetailPageViewController.h
@interface DetailPageViewController : UIViewController <AVAudioPlayerDelegate> {
RootViewController *_parentViewController;
// Declare the iVars
}
@property (nonatomic, assign) RootViewController *parentViewController;
- (id)initWithParentViewController:(RootViewController *)parentViewController;
@end
DetailPageViewController.m
@synthesize parentViewController = _parentViewController;
- (void)dealloc {
// Set the delegate to nil
[self.parentViewController.appSoundPlayer setDelegate:nil];
// Dealloc the other properties that you may have
[super dealloc];
}
- (id)initWithParentViewController:(RootViewController *)parentViewController {
if (self = [super init]) {
self.parentViewController = parentViewController;
}
return self;
}
- (void)viewDidLoad {
[super viewDidLoad];
if (self.parentViewController.appSoundPlayer == nil) {
[playButton setHidden: NO];
[pauseButton setHidden: YES];
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"soundFile" ofType:@"mp3"];
NSURL *newURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];
self.soundFileURL = newURL;
[newURL release];
AVAudioPlayer *newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: soundFileURL error: nil];
[newPlayer prepareToPlay];
[newPlayer setVolume: 1.0];
[newPlayer setDelegate: self];
self.parentViewController.appSoundPlayer = newPlayer;
[newPlayer release];
}
}
Я не тестировал этот код, но вы можете иметь хорошее представление о том, что вам нужно будет сделать.Конечно, есть и другие способы сделать это.