2012-06-25 60 views
0

如果此UIButton回退可以將通知發送到UIButton播放,以便在單擊後退按鈕時執行playpauseaction方法。如何使用NSNotificationCenter將通知從一個UIButton發送到另一個UIButton

-(void)rewind:(id)sender{ 
[timer invalidate]; 
audioPlayer.currentTime = 0; 
MainViewController *viewController = [[MainViewController alloc] init]; 
viewController.view.frame = CGRectMake(0, 0, 320, 480); 
[self.view addSubview:viewController.view]; 
[self.view addSubview:toolbar]; 
[viewController release]; 
} 

-(void)playpauseAction:(id)sender {  
if([audioPlayer isPlaying]) 
{ 
    [sender setImage:[UIImage imageNamed:@"Play Icon.png"] forState:UIControlStateSelected]; 
    [audioPlayer pause]; 
    [self pauseTimer]; 
    [self pauseLayer:self.view.layer]; 
} 
else 
{ 
    [sender setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal]; 
    [audioPlayer play]; 
    [self resumeTimer]; 
    [self resumeLayer:self.view.layer]; 

    if(isFirstTime == YES) 
    { 
     self.timer = [NSTimer scheduledTimerWithTimeInterval:11.0 
                 target:self 
                selector:@selector(displayviewsAction:) 
                userInfo:nil 
                repeats:NO]; 
     isFirstTime = NO; 
    } 
    } 
    } 

快退按鈕時,點擊進行快退法,以及發送通知播放按鈕來執行playpauseAction方法。

感謝您的幫助。

編輯 宣佈

@property (nonatomic, retain) UIButton *playButton; 
    @synthesize playButton = _playButton; 
    [self playpauseAction:_playButton]; 

什麼發生的事情是在快退按鈕,點擊它進行播放暫停操作方法,但不切換播放按鈕,暫停按playpauseaction方法時。這是爲什麼

回答

1

如果你有你的播放暫停按鈕的引用(你會希望有做這種事情一噸更容易),你可以在此線在你rewind方法

[self playpauseAction:playpauseButton]; 

您根本不需要使用通知中心

+0

呀,你的權利,也許他們可能想從另一個類調用它(我不知道他們爲什麼會想這樣做),但我想這就是他們的要求是什麼......你的回答雖然好得多......;) –

+0

如何獲得播放暫停按鈕的參考 – user1452248

+0

試過這個不行,或者 – user1452248

2

在您的視圖中確實加載了這個;

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playpauseAction) name:@"ButtonPressed" object:nil]; 

當按下按鈕時,添加此代碼;

[[NSNotificationCenter defaultCenter] postNotificationName:@"ButtonPressed" object:nil]; 

它應該打電話給你playpauseAction。

不要忘了在你的dealloc中編寫;

[[NSNotificationCenter defaultCenter] removeObserver:self name:@"ButtonPressed" object:nil]; 

否則,您的代碼將崩潰,因爲即使您的類的實例不再存在,該方法仍將嘗試調用該方法。

希望這有助於

喬納森

+0

所以基本上在倒帶方法中,我應該添加此[[NSNotificationCenter defaultCenter] postNotificationName:@「ButtonPressed」object:nil];發送通知播放按鈕執行playpauseaction方法right – user1452248

+0

在dealloc方法中添加[[NSNotificationCenter defaultCenter] removeObserver:self name:kReachabilityChangedNotification object:nil];並得到紅色的消息,使用未聲明的標識符kReachabilityChangedNotification – user1452248

+0

抱歉,編輯了代碼 - 應該是現在!爲了迴應你的第一條評論,是的,你是對的。 –

相關問題