0

この UIButton rewind が UIButton play に通知を送信して、巻き戻しボタンがクリックされたときに 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 メソッドを実行します。

手伝ってくれてありがとう。

EDIT 宣言しました

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

巻き戻しボタンをクリックすると、再生一時停止アクションメソッドが実行されますが、再生ボタンをトグルして再生一時停止アクションメソッドに従って一時停止することはありません。何故ですか

4

2 に答える 2

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];

そうしないと、クラスのインスタンスが存在しなくなった場合でもメソッドが呼び出されようとするため、コードがクラッシュします。

お役に立てれば、

ジョナサン

于 2012-06-25T16:26:17.207 に答える
1

再生一時停止ボタンへの参照がある場合 (この種のことを非常に簡単にする必要があります)、rewindメソッドにこの行を記述するだけです。

[self playpauseAction:playpauseButton];

通知センターをまったく使用する必要はありません

于 2012-06-25T16:24:56.620 に答える