任何人都可以教我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);
}
}
我试过但失败了......
答案 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语句处理它。