0

この巻き戻し方法は、巻き戻しボタンと再生ボタンの両方に使用できます。

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

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

この方法では、送信者は巻き戻しボタンであり、再生/一時停止の切り替えは巻き戻しボタンで発生しますが、送信者である巻き戻しボタンではなく、再生ボタンでこの切り替えが必要です。そこで、切り替えたい実際のボタンの名前を付けてみました。そのボタンをコードで再生ボタンとして定義し、そのアクションメソッドをこの巻き戻しメソッドに追加しました。

これが再生ボタンの定義方法です

//Add Play Button
UIButton *playButton = [UIButton buttonWithType:UIButtonTypeCustom];
[playButton addTarget:self action:@selector(playpauseAction:) forControlEvents:UIControlEventTouchUpInside];
playButton.frame = CGRectMake(0, 0, 30, 30);
[playButton setImage:[UIImage imageNamed:@"Play Icon.png"] forState:UIControlStateNormal];
[playButton setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateSelected];
UIBarButtonItem *play = [[UIBarButtonItem alloc] initWithCustomView:playButton];

これは、巻き戻しボタンに追加した再生ボタンの方法です。

-(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;
        }
    }
}

この時点で直面している問題は、巻き戻しボタンをクリックすると、巻き戻しボタンではなく再生ボタンでトグルが発生することです。

しかし、この問題を修正するために、このような巻き戻しメソッドで送信者をplayButtonに置き換えただけです。

[playButton setImage:[UIImage imageNamed:@"Play Icon.png"] forState:UIControlStateSelected];

しかし、宣言されていない識別子playButtonを使用しているという警告メッセージが赤で表示されます。

巻き戻しボタンではなく、playButtonで切り替えを行うように巻き戻しメソッドに指示するにはどうすればよいですか。

助けてください。

ありがとう。

4

1 に答える 1

2

「宣言されていない識別子 playButton」は、インスタンス変数 playButton がないことを示しています。

おそらく作成したメソッドでのみ表示されますが、他のメソッドからアクセスできるようにするには、iVar に保存する必要があります。

于 2012-06-24T20:12:19.803 に答える