我正在尝试使用音板应用,我需要在视图控制器上使用超过50个按钮(每个声音一个)。此外,我想完全以编程方式制作按钮(和音频播放器代码),因为在故事板和.h / .m文件之间切换是很烦人的。我没有复制和粘贴相同的按钮代码50次,而是使用这个for循环为我制作按钮:
NSUInteger i;
int xCoord=0;
int yCoord=0;
int buttonWidth=100;
int buttonHeight=50;
int buffer = 10;
for (i = 1; i <= 100; i++)
{
UIButton *aButton = [UIButton buttonWithType:UIButtonTypeCustom];
aButton.frame = CGRectMake(xCoord, yCoord,buttonWidth,buttonHeight );
[aButton addTarget:self action:@selector(playAudioMethod) forControlEvents:UIControlEventTouchUpInside];
[scrollView addSubview:aButton];
yCoord += buttonHeight + buffer;
}
[scrollView setContentSize:CGSizeMake(700, yCoord)];
按钮点击事件选择器中的playAudioMethod只播放一个声音。怎么会有50个声音,每个声音对应一个单独的按钮?对不起,如果这是一个非常基本的问题,我仍然在学习目标C.谢谢!
编辑:
这是playAudioMethod:
- (void) playButtonSound:(id)inSender
{
AudioServicesPlaySystemSound(self.SoundID);
}
它基本上只播放SoundID属性,我通过这个传递声音文件:
NSURL *buttonURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"medic_taunts01" ofType:@"wav"]];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)buttonURL, &SoundID);
self.SoundID = SoundID;
答案 0 :(得分:0)
playAudioMethod
有一个参数,即sender
。 sender
是生成消息的按钮。
- (void)playAudioMethod:(id)sender
{
UIButton *button = (UIButton *)sender;
switch (button.tag)
{
//....
}
}
您可以使用按钮的tag
属性来存储值,例如,您可以存储一个允许您识别playAudioMethod
中的按钮的整数,或者您可以直接存储该名称。音频资源。
答案 1 :(得分:0)