我已經完成了一個叫做MyBgMusic.h的單例類,它是MyBgMusic.m。如何將該單例類引用到我的SecondViewController或XIB的其餘部分。iOS:如何從單身課程中引用音樂背景?
這裏是我的單例類:
.h文件:
#import <Foundation/Foundation.h>
#import <AVFoundation/AVAudioPlayer.h>
@interface MyBgMusic : UIViewController <AVAudioPlayerDelegate> {
AVAudioPlayer *player;
UIButton *playBgMusic;
}
@property (nonatomic, retain) IBOutlet AVAudioPlayer *player;
@property (nonatomic, retain) IBOutlet UIButton *playBgMusic;
+ (id)sharedManager;
-(IBAction) toggleMusic;
@end
M檔:
#import "MyBgMusic.h"
static MyBgMusic *sharedMyManager = nil;
@implementation MyBgMusic
@synthesize player,playBgMusic;
#pragma mark -
#pragma mark Singleton Methods
+ (MyBgMusic*)sharedManager {
static MyBgMusic *sharedMyManager;
if(!sharedMyManager) {
static dispatch_once_t oncePredicate;
dispatch_once(&oncePredicate, ^{
sharedMyManager = [[super allocWithZone:nil] init];
});
}
return sharedMyManager;
}
+ (id)allocWithZone:(NSZone *)zone {
return [self sharedManager];
}
- (id)copyWithZone:(NSZone *)zone {
return self;
}
#if (!__has_feature(objc_arc))
- (id)retain {
return self;
}
- (unsigned)retainCount {
return UINT_MAX; //denotes an object that cannot be released
}
- (id)autorelease {
return self;
}
- (void)dealloc
{
[MyBgMusic release];
[playBgMusic release];
[player release];
[super dealloc];
}
#endif
#pragma mark -
#pragma mark Custom Methods
- (IBAction)toggleMusic {
if ([self.player isPlaying] == YES) {
[self.player stop];
} else {
[self.player play];
}
self.playBgMusic.enabled = YES;
}
- (void)viewDidLoad
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"music" ofType:@"mp3"];
self.player=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
player.delegate = self;
[player play];
player.numberOfLoops = -1;
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}
SecondViewController.m(我想從單個類引用,這樣我可以再次使用時不會弄亂背景音樂的按下和關閉。)
- (IBAction)toggleMusic{
if ([self.player isPlaying] == YES) {
[self.player stop];
} else {
[self.player play];
}
self.playBgMusic.enabled = YES;
}
我應該聲明是這樣的:
-(IBAction) sharedMusic {
[[MyBgMusic sharedManager] toggleMusic]; // instance method shareManager not found. What does it mean?
}
我已經有這個代碼在我IBAction爲: - (IBAction爲)toggleMusic { 如果([self.player IsPlaying模塊] == YES){ [self.player站] } else { [self.player play]; } self.playBgMusic.enabled = YES; } – Amink
我應該在哪裏放置這段代碼:[[MyBgMusic sharedInstance] toggleMusic]; – Amink