我对Xcode有一个奇怪的问题,我只是无法理解。
@interface MenuViewController : UIViewController{
AVAudioPlayer *audioPlayer;
}
这是我在一个视图和另一个视图中实现的东西,我尝试使用该音频播放器并且它不起作用。是的,我已在其他视图中导入了此视图控制器。谁能帮忙。
答案 0 :(得分:0)
您应该使用属性而不是实例变量才能从其他类访问AVAudioPlayer
:
@interface MenuViewController : UIViewController {
}
@property (retain) AVAudioPlayer* audioPlayer;
在另一个View Controller中,您可以使用
获取audioPlayer
[myMenuViewController audioPlayer]
答案 1 :(得分:0)
这是OOP的一项功能。根据您的要求,您需要执行以下两项操作之一。要么在两个地方实例化对象,要么在一个地方实例化它并将其传递给另一个地方。如果你想传递它,你可以使用NSNotification之类的东西。在将要使用共享audioPlayer的类中,您可以执行以下操作:
- (id)init
{
self = [super init];
if (self) {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(incomingAudioPlayer:)
name:@"ShareAudioPlayer"
object:nil];
}
return self;
}
- (void)incomingAudioPlayer:(NSNotification *)notification {
// do stuff here
}
在实例化audioPlayer的类中(就在实例化之后),你可以这样做:
[[NSNotificationCenter defaultCenter] postNotificationName:@"ShareAudioPlayer"
object:self
userInfo:audioPlayer];
实际上你可能需要使用userInfo并在NSDictionary中粘贴audioPlayer,但这应该让你更接近。这是我通常使用的方法,可能还有其他方法。