在多个视图上添加共享按钮

时间:2014-07-08 16:22:20

标签: ios uiview uibutton appdelegate

我正在开发一款播放某些"背景"应用程序内的音乐。该应用程序包含许多视图,但不使用NavigationController。

我需要添加"静音"按钮到相当多的视图/ viewcontrollers,允许用户静音/取消静音背景音乐。在单个位置添加此功能的最佳方法是什么,同时允许我在许多不同的视图/视图控制器中使用它,而不必多次编写相同的静音/取消静音代码?

1 个答案:

答案 0 :(得分:0)

我有两个想法:

  1. 您可以对UIButton进行子类化,因此您可以处理init函数中的外观。它也可以有一个代表,你可以调用它来静音/取消静音。

  2. 你可以拥有一个具有一个公共类函数的类,它接受一个UIButton。然后它将设置样式并通过addTarget:action:forControlEvents:添加对私有类函数的调用。这样,您的公共功能就会处理风格,而私人功能则会处理静音/取消静音。

  3. 要详细说明第二点,你可以编写一个与此类似的函数

    + (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,调用该函数并传入按钮。由于您希望在整个地方都有一个静音按钮,只需在您的任何视图中添加一个不同的按钮,然后将它们传递给该功能。