我正在开发一款播放某些"背景"应用程序内的音乐。该应用程序包含许多视图,但不使用NavigationController。
我需要添加"静音"按钮到相当多的视图/ viewcontrollers,允许用户静音/取消静音背景音乐。在单个位置添加此功能的最佳方法是什么,同时允许我在许多不同的视图/视图控制器中使用它,而不必多次编写相同的静音/取消静音代码?
答案 0 :(得分:0)
我有两个想法:
您可以对UIButton进行子类化,因此您可以处理init函数中的外观。它也可以有一个代表,你可以调用它来静音/取消静音。
你可以拥有一个具有一个公共类函数的类,它接受一个UIButton。然后它将设置样式并通过addTarget:action:forControlEvents:
添加对私有类函数的调用。这样,您的公共功能就会处理风格,而私人功能则会处理静音/取消静音。
要详细说明第二点,你可以编写一个与此类似的函数
+ (void)setupMuteButton:(UIButton *)button
{
[button setBackgroundImage:[UIImage imageNamed:@"mute.png"] forState: UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"unmute.png"] forState: UIControlStateSelected];
[button addTarget:self action:@selector(muteButtonTapped:) forControlEvents: UIControlEventTouchUpInside];
....
....
....
....
}
+ (void)muteButtonTapped:(UIButton *)button
{
self.selected = !self.selected;
if(self.selected){
//code to mute
}else{
//code to unmute
}
}
然后将setupMuteButton:
添加到Class'界面,然后只导入该Class,调用该函数并传入按钮。由于您希望在整个地方都有一个静音按钮,只需在您的任何视图中添加一个不同的按钮,然后将它们传递给该功能。