-1

可能的重复:
在视图控制器之间传递数据

我对 Xcode 有一个奇怪的问题,我无法理解。

@interface MenuViewController : UIViewController{
    AVAudioPlayer *audioPlayer;
}

这是我在一个视图中实现的,在另一个视图中我尝试使用该音频播放器但它不起作用。是的,我已经在我的另一个视图中导入了这个视图控制器。任何人都可以帮忙。

4

2 回答 2

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 并将 audioPlayer 粘贴在 NSDictionary 或其他东西中,但这应该让您更接近。这是我通常使用的方法,可能还有其他方法。

于 2012-11-27T22:51:53.817 回答
0

您应该使用属性而不是实例变量来访问AVAudioPlayer其他类:

@interface MenuViewController : UIViewController {
}

@property (retain) AVAudioPlayer* audioPlayer;

在另一个视图控制器中,您可以audioPlayer使用

[myMenuViewController audioPlayer]
于 2012-11-27T22:37:23.320 回答