基本上我想创建48个按钮插座。我在界面构建器中创建了按钮,我希望能够将它们连接到插座。
当我按下其中一个按钮时,我需要能够播放声音。但播放的声音文件应该是可自定义的。
我想要像:
//first create the outlets
for(int i=1;i<49;i++){
IBOutlet UIButton [Nstring of type (@"but%d"), i];
[add butt"i" to array];
}
//然后将插座连接到按钮
//listen for buttons pressed
while(1){ //or the listener equivalent don't know exactly how i works
for(int i=1;i<49;i++){
if(array[i].pressed==TRUE){
//if button is pressed play the according file
playsound(sounds[i]);
}
}
}
我需要能够轻松更改播放的文件 谢谢
答案 0 :(得分:0)
我想要像:
不。你很可能想要这样的东西:
- (void)viewDidLoad
{
[super viewDidLoad];
NSInteger i = 0;
for (NSInteger y = 0; y < 7; y++) {
for (NSInteger x = 0; x < 7; x++) {
i++;
CGRect frame = CGRectMake(5 + x * 45, 5 + y * 65, 40, 60);
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = frame;
button.tag = i;
[button setTitle:[NSString stringWithFormat:@"%d", i] forState:UIControlStateNormal];
[button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}
}
}
- (IBAction)buttonClicked:(UIButton *)sender {
NSLog(@"Imagine the music button number %d will play soon", sender.tag);
}
我知道,这是一个额外的按钮。让第49个按钮播放stackoverflow jingle。
说真的,你应该阅读一些基本的文档。从About Creating Your First iOS App开始。 Apple拥有优秀的文档,并且有数百个初学者教程。
答案 1 :(得分:0)
您可能需要更多练习Xcode / Objective-C基础知识和习语。 您的方法无效(例如,在iOS上,我们不循环(而(1))来监听事件。
找一些书,你很快就能制作出自己的音板。
如果你想坚持下去,这里有一些提示: 假设您手动将按钮放在XIB视图上。 将differents标记(例如从1000到1048)分配给每个按钮,并使用操作绑定它们:
// In your .h file
- (IBAction)didTouchButton:(UIButton * )sender;
然后你需要实现这个动作:
// In you .m file
- (IBAction)didTouchButton:(UIButton * )sender {
NSString * fileName = [NSString stringWithFormat:@"%d", sender.tag];
NSURL *url = [[NSBundle mainBundle] URLForResource:fileName withExtension: @"mp3"];
if (!url){NSLog(@"file not found"); return;}
NSError *error;
self.audio = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error] ;
[audio play];
}
为self.audio创建一个属性(.h中的@property和.m中的@synthesize)。 将名称从1000.mp3到1048.mp3的48个声音重命名,并将它们添加到项目中。 添加框架AVFoundation.framework(target-&gt; build phase-&gt; Link binaries with librairies-&gt; +)。
当您点击带有标签N的按钮时,它将播放名为N.mp3的声音。
祝你好运