可能的重复:
在视图控制器之间传递数据
我对 Xcode 有一个奇怪的问题,我无法理解。
@interface MenuViewController : UIViewController{
AVAudioPlayer *audioPlayer;
}
这是我在一个视图中实现的,在另一个视图中我尝试使用该音频播放器但它不起作用。是的,我已经在我的另一个视图中导入了这个视图控制器。任何人都可以帮忙。
可能的重复:
在视图控制器之间传递数据
我对 Xcode 有一个奇怪的问题,我无法理解。
@interface MenuViewController : UIViewController{
AVAudioPlayer *audioPlayer;
}
这是我在一个视图中实现的,在另一个视图中我尝试使用该音频播放器但它不起作用。是的,我已经在我的另一个视图中导入了这个视图控制器。任何人都可以帮忙。
这是 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 并将 audioPlayer 粘贴在 NSDictionary 或其他东西中,但这应该让您更接近。这是我通常使用的方法,可能还有其他方法。
您应该使用属性而不是实例变量来访问AVAudioPlayer
其他类:
@interface MenuViewController : UIViewController {
}
@property (retain) AVAudioPlayer* audioPlayer;
在另一个视图控制器中,您可以audioPlayer
使用
[myMenuViewController audioPlayer]