任何人都可以教我IBAction如何使用“isEqualToString”到NSArray对象?

时间:2014-07-10 00:10:00

标签: ios objective-c nsarray

任何人都可以教我IBAction如何将isEqualToString用于NSArray个对象?

每当用户触摸按钮时,我都会创建一个IBAction来播放声音。

我的第一页是TableView和Array一个声音数据列表。

“DetailModal”是来自其他ViewController的NSArray对象。

我正在使用AudioToolbox,我已经将声音文件创建为soundID

如何使用isEqualToString链接NSArray对象?

例如:

我已经创建了一个soundID列表:

NSURL *buttonURL1 = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"A" ofType:@"m4a"]];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)buttonURL1, &soundID1);

NSURL *buttonURL2 = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"I" ofType:@"m4a"]];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)buttonURL2, &soundID2);

Detail2ViewController.h

@property (strong, nonatomic) NSArray *DetailModal;

如何在IBAction中对NSArray对象使用“isEqualToString”?

- (IBAction)Sound {
    int sound =  _DetailModal;

    if ([_TitleLabel.text isEqualToString:@"/a/"]) {
        AudioServicesPlaySystemSound(soundID1);
    }

    if ([_TitleLabel.text isEqualToString:@"/i/"]) {
        AudioServicesPlaySystemSound(soundID2);
    }
}

我试过但失败了......

2 个答案:

答案 0 :(得分:1)

这是NSDictionary而非NSArray的完美候选者。构建NSDictionary时,您可以像这样构建它:

[mutableDict setObject:yourNSURLA forKey:@"A"];
[mutableDict setObject:yourNSURLB forKey:@"B"];

现在播放声音非常容易:

- (IBAction)onClick1:(id)sender {
    NSString *title = [(UIButton *)sender currentTitle]; 
    NSURL * soundFileURL = [mutableDict objectForKey:title];
    AudioServicesCreateSystemSoundID((CFURLRef)soundFileURL, &_MySound);
    AudioServicesPlaySystemSound(_MySound);
}

答案 1 :(得分:0)

你需要做两件事。首先,为按钮指定一个标题,然后阅读它。

我的代码与您想要的代码类似,因此您应该能够根据自己的需要进行调整。在我创建按钮的代码部分中,我给它一个标题和一个按下它时执行的方法。

 [self.wordButton setTitle:@"w" forState:UIControlStateNormal];
[self.wordButton addTarget:self 
                        action:@selector(wordButtonPressed:) 

然后,我读了标题并做了一些事情。

- (IBAction)wordButtonPressed:(UIButton *)sender {

    NSString *whichSnd = [NSString stringWithFormat:@"%@",sender.titleLabel.text];
    id <SayButtonsDelegate> SB_delegate = _delegate;
    [SB_delegate sayButtonPressed:whichSnd];
}

在我的情况下,我将titleLabel发送给代表,并根据标题决定播放哪种声音,例如w表示播放单词sound,snd表示播放单词中的声音,alpha表示声音中的字母。但我认为你可以使用if语句处理它。