2010-06-16 2 views
10

IB에서 UIBarButtonItem의 식별자를 '재생'으로 설정하여 재생 버튼 (오른쪽 삼각형)의 이미지를 추가 할 수 있습니다.UIBarButtonItem 식별자를 프로그램 적으로 변경 (초기화하지 않음) 하시겠습니까?

이 이미지를 프로그래밍 방식으로 바꿀 수 있습니까? 재생 버튼을 누르면 '일시 중지'로 변경하고 싶습니다.

나는 UIBarButtonItem을 식별자로 초기화 할 수 있지만 아직 초기화 된 후에는 변경할 방법이 없다는 것을 알고 있습니다. 이것은 가능한가?

제가 생각할 수있는 유일한 점은 이전 버튼을 제거하고 새 버튼을 초기화하는 것입니다. 그러나 이것은 거의 효율적이지 않습니다.

의견이 있으십니까?

답변

14

좋아, 나는이 질문을 봤는데 sample code from Apple으로 달렸는데 정확히 같은 일을한다. (도구 모음 버튼에서 재생/일시 중지 버튼 그래픽 전환). 그러나 내장 된 재생 및 일시 중지 식별자 인 UIBarButtonItem 대신에 사용자 정의 UIButton을 사용하고 사용자 정의 이미지를 전환 할 수 있습니다.

Apple이 내장 된 재생 대신 UButton에서 맞춤 이미지를 만들고 전환하는 문제를 겪고 UIBarButtonItem 버튼을 일시 중지하면 프로그래밍 방식으로 UIBarButtonItem의 식별자를 변경할 방법이 없다고 말하는 것이 안전하다고 생각합니다.

이 버튼을 누를 때 (애플) 이미지를 전환 할 것입니다 :

// Call this when the button you want to toggle is pressed: 
[playButton setImage:((p.playing == YES) ? pauseBtnBG : playBtnBG) forState:UIControlStateNormal]; 

것은 당신이 당신의 버튼의 상태를 유지하기 원하는 BOOL와 p.playing를 교체합니다. playButton은 도구 모음에 사용자 정의 UIButton입니다. pauseBtnBGplayBtnBG은 토글 할 이미지입니다.

13

이 상당히 잘 작동하는 것 같다 :이 예에서

UIBarButtonItem *oldButton = [myToolBar.items objectAtIndex:1]; 
[myToolBar setItems:[NSArray arrayWithObjects:[myToolBar objectAtIndex:0], [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemStop target:self action:@selector(tapStopRefreshButton:)],nil] animated:NO]; 
[oldButton release]; 

는 내가있는 UIWebView의 도구 모음을 가지고 누군가가 새로 고침을 클릭 할 때 나는 중지하는 변경을 원했습니다. 툴바는 단지 유연한 공간과 하나의 버튼을 가지고 있었기 때문에 버튼을 오른쪽 정렬했습니다. 따라서 이전 버튼에 대한 참조를 얻었고 이전 선택기와 동일한 선택기로 새 탭을 만들고 탭 막대의 버튼을 재설정했습니다 원래 버튼을 놓았습니다.

가장 좋지는 않지만 단추 클래스를 재정의하지 않고도 모든 표준 단추를 사용할 수 있습니다.

+0

Apple은 StitchedStreamPlayer 예제에서이 작업을 수행합니다. http://developer.apple.com/library/ios/#samplecode/StitchedStreamPlayer/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010092 – pablasso

+0

기술적으로 ' 'UIBarButtonSystemItem'을 OP로 변경하면이 대답을 통해 한 시스템 항목의 * 대체 *를 다른 항목으로 대체 할 수 있습니다. –

+0

이 예제에서는 새 UIBarButtonItem을 배열에 넣기 전에 초기화해야하므로 제대로 릴리스 될 수 있습니다. –

0

누적 도구 막대는 약 2 개입니까? 그런 다음 맨 위에는 시스템 버튼이 있고 맨 아래에는 시스템 버튼이 있습니다. 재생 버튼을 누르면 상단 툴바를 숨 깁니다.

+0

그는 이미지를 바꾸거나 버튼을 교체하고 툴바를 사라지게 할 필요가 없습니다. – JoshDM

+0

@JoshDM 그러나 도구 모음이 사라지면 사용자에게 표시되는 단추가 변경됩니다. 더욱이 이러한 경우에는 일반적으로 하나가 아니라 변경해야하는 버튼 집합이 있으므로 사용자 정의 UIButton을 만들고 토글하는 대신 표준 UIBarButtonItem을 사용하여 두 개의 다른 툴바를 쉽게 찾을 수 있습니다. 또한보기를 '숨기기'쉽습니다. 하지만 당신이 옳은 것은 질문에 대한 대답이 아니며 그것은 질문자 문제에 대한 대답입니다. – FranMowinckel

관련 문제