如何使用NSNotificationCenter从一个UIButton向另一个UIButton发送通知

时间:2012-06-25 16:14:47

标签: iphone

如果单击倒带按钮,此UIButton倒带如何向UIButton播放发送通知以执行playpauseaction方法。

-(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方法切换播放按钮暂停。为什么呢?

2 个答案:

答案 0 :(得分: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];

否则您的代码将崩溃,因为即使您的类的实例不再存在,该方法仍将尝试调用。

希望这有帮助,

乔纳森

答案 1 :(得分:1)

如果你有一个游戏暂停按钮的引用(你想让这种事情变得更容易),你可以在rewind方法中写下这一行

[self playpauseAction:playpauseButton];

您无需使用通知中心