0

タイトルの通り、ボタンを押したときに音を入れることができましたが、同じボタンを押したときにメインの UIImageView にも画像の変更を追加する方法がないか疑問に思っていました。「playFaceOfAudioType」メソッドが提示されている場所に画像コードを貼り付ける方法はありますか?

これまでの私のコードは次のとおりです。

#import "FourthViewController.h"

@interface FourthViewController ()

@end

@implementation FourthViewController

@synthesize audioPlayer;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

- (IBAction)facesAudioAction:(id)sender {
    UIButton *btn=(UIButton *)sender;
    [self playFaceAudioOfType:btn.tag];//Tag for button is set on the xib..

}




-(void)playFaceAudioOfType:(int)type{

    [self stopAudio];


    NSString *sound=@"";

    switch (type) {
        case 1:
            sound=@"1";
            break;

        case 2:
            sound=@"2";
            break;

        case 3:
            sound=@"3";
            break;

        case 4:
            sound=@"4";
            break;

        case 5:
            sound=@"5";
            break;

        default:
            break;
    }


    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
                                         pathForResource:sound
                                         ofType:@"mp3"]];



    NSError *error;
    if(url){
        audioPlayer = [[AVAudioPlayer alloc]
                       initWithContentsOfURL:url
                       error:&error];



        if (error)
        {
            NSLog(@"Error in audioPlayer: %@",
                  [error localizedDescription]);
        } else {
            audioPlayer.delegate = self;
            [audioPlayer prepareToPlay];
        }

        [audioPlayer play];
    }


}




-(void)stopAudio{

    if(audioPlayer && [audioPlayer isPlaying]){
        [audioPlayer stop];
        audioPlayer=nil;
    }


}



- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

通常、これは if / else if タイプのアプローチを実行することで行われますが、switch ステートメント ビットと一緒に含めることができるかどうか疑問に思っていました。

4

2 に答える 2

1

または のいずれfacesAudioActionplayFaceOfAudioTypeの方法を使用して、イメージを変更できます。

また、次のように switch ステートメントを取り除くこともできます。

NSString *sound = [NSString stringWithFormat:@"%d", type];

次のように画像を設定できます。

NSString *imageName = [NSString stringWithFormat:@"%d.jpg", type];
yourImageView.image = [UIImage imageNamed:imageName];
于 2013-07-22T07:16:26.890 に答える
-1

UIControl のタグを使用する場合はNSString *sound = [NSString stringWithFormat:@"%d",type];、playFaceAudioOfType: function. で定義すると、switch ステートメントを回避できます。

そしてSolution2、setImage:forState:方法表示ボタンのスタイルを使用して、button.titleLabel.text曲の情報(例:名前)を保存することができます。

于 2013-07-22T09:02:17.273 に答える