2014-07-08 1 views
0

저는 앱 내부에서 "배경 음악"을 재생하는 앱을 만들고 있습니다. 앱에 여러보기가 있지만 NavigationController는 사용하지 않습니다.여러보기에 공유 버튼 추가

사용자가 배경 음악을 음소거/음소거 해제 할 수있는보기 /보기 컨트롤러에 "음소거"단추를 추가해야합니다. 동일한 뮤트/뮤트 해제 코드를 여러 번 쓰지 않아도 많은 뷰/뷰 컨트롤러에서이 기능을 사용할 수있게하면서이 기능을 단일 위치에 추가하는 가장 좋은 방법은 무엇입니까?

+0

여러 단추를 추가 할 수도 있지만 고유 한 기능 (예 : 단일 기능)을 호출 할 수 있습니다. –

+0

버튼은 소리가 음소거 상태인지 음소거 상태인지에 따라 모양을 변경해야하므로 모든 단일보기에서이를 처리해야합니다. 이는 피하려고하는 것입니다. –

답변

0

나는이 개 아이디어를 가지고 :

  1. 는 init 함수의 모양을 돌볼 수 있도록 당신은 하위 클래스있는 UIButton을 할 수 있었다. 또한 음소거/음소거를 호출 할 수있는 대리인이있을 수 있습니다.

  2. UIButton을 사용하는 공용 클래스가 하나있는 클래스가있을 수 있습니다. 그런 다음 스타일을 지정하고 addTarget:action:forControlEvents:을 통해 비공개 클래스 함수에 호출을 추가합니다. 그렇게하면 public 함수가 스타일을 처리하고 private 함수가 음소거/음소거를 처리합니다.

이 두 번째 점에 정교하게 , 당신은 그 클래스 '인터페이스에 setupMuteButton:를 추가하려면이

+ (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 
    } 
} 

유사한 기능을 쓸 수 다음 그냥 그 클래스를 가져 함수를 호출에 전달 귀하의 버튼. 장소 전체에 음소거 버튼이 있기를 원하기 때문에 다른 버튼을 뷰에 추가하고 해당 버튼을 함수에 전달하면됩니다.

+0

두 번째 옵션에 대해 자세히 설명 할 수 있습니까? "UIButton을 가져 가라"는 것은 무엇을 의미합니까? 좀 더 구체적으로 중심 클래스를 구현하는 방법과 필요한 곳에 필요한 모든 뷰에 단추를 구현하는 방법에 대해 구체적으로 설명해 주시겠습니까? –

+0

위 코드를 추가했습니다. – Rob

+0

그러는 동안 나는 버튼이 들어있는 MuteViewController를 추가하고 상태를 처리 한 다음 버튼이 필요한 각 viewController에 childViewController로 추가했습니다. 좀 더 간단하고 각 개별 viewController 주위에 버튼을 이동하는 것보다 쉽게 ​​접근하기 때문에 당신의 접근 방식을 시도합니다. –