2012-11-27 9 views
-1

가능한 중복 :
Passing Data between View ControllersXcode에서보기 컨트롤러간에 데이터가 전달됩니까?

난 그냥 캔트 이해 엑스 코드와 이상한 문제에 봉착했습니다.

@interface MenuViewController : UIViewController{ 
    AVAudioPlayer *audioPlayer; 
} 

그건 내가보기에 구현 한 것이며 다른 오디오 플레이어를 사용하여 시도했지만 작동하지 않았습니다. 예, 다른보기에서이보기 컨트롤러를 가져 왔습니다. 누구든지 도와 줄 수 있어요.

당신은 다른 클래스에서 AVAudioPlayer에 액세스 할 수 있도록하는 대신 인스턴스 변수의 속성을 사용해야합니다

답변

0

: 다른보기 컨트롤러에서

@interface MenuViewController : UIViewController { 
} 

@property (retain) AVAudioPlayer* audioPlayer; 

당신은 그 사용 audioPlayer를 얻을 수 있습니다

[myMenuViewController audioPlayer] 
+0

두 번째 코드를 넣을 곳은 어디입니까 – user1612646

+0

다른 뷰에서'MenuViewController'에 대한 참조를 얻는 방법을 모르겠습니다 ..'MenuViewController' 변수의 이름으로 'myMenuViewController'를 대체 할 수 있습니다 ...에서 – s1m0n

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 나 다른 것들에 붙여야 할 수도 있습니다. 이것은 내가 일반적으로 사용하는 방법이며, 다른 방법이있을 수 있습니다.

관련 문제