2010-12-28 2 views
1

내 응용 프로그램에는 UINavigationController에 의해 관리되는 UIViewController 하위 클래스가 있습니다. 내 UIViewController 하위의의 viewDidLoad에서 UIViewController : setToolbarItems와 navigationItem

, 나는 다음과 같은 도구 모음에 UIBarButtonItem을 추가하려고 시도했습니다 :

settingsButton = [[UIBarButtonItem alloc] initWithTitle:@"Settings" 
    style:UIBarButtonItemStylePlain target:self action:@selector(viewSettings:)]; 
[self setToolbarItems:[NSArray arrayWithObject:settingsButton]]; 

이 일부 주위에 인터넷 검색 후, 나는이 시도 그래서, 나를 위해 밖으로 작동하지 않는

[[self navigationItem] setRightBarButtonItem:settingsButton]; 

괜찮 았던. UIViewController documentation을 읽을 때부터 setToolbarItems가 작동하지 않는 이유에 대해 여전히 혼란 스럽습니다. 디버거에서 button이 viewDidAppear 메서드의 toolbarItems 배열에 있는지 확인했습니다. 단추 자체가 내 도구 모음에 나타나지 않습니다.

제 질문은, 왜 setToolbarItems가 첫 번째 코드 스 니펫에서 저에게 효과가 없었습니까?

이보기 컨트롤러에 대한 내 xib에 도구 모음이 구성되어 있지 않아 차이가있을 수 있습니다.

[self setToolbarItems:[NSArray arrayWithObject:settingsButton]]; 

샤니 당신은 탐색 기반 애플 리케이션을위한 기본적으로보기에 줄을 참조 difference.Whenever을

답변

0

시도는의

[toolbar setItems:[NSArray arrayWithObject:settingsButton] animated:YES]; 

instad를 사용하는 실제로는 탐색 바입니다. 그래서 self.navigationItem을 참조하여 항목을 추가 할 수 있습니다.

0

ipad 앱에서 도구 모음 항목을 "topViewController"로 설정해야합니다 (예 : 반 직관적입니다).

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:catView]; 
UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithTitle:@"item 1" style:UIBarButtonItemStylePlain target:nil action:nil]; 
UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithTitle:@"item 2" style:UIBarButtonItemStylePlain target:nil action:nil]; 
[nav setToolbarHidden:NO animated:YES]; 
// WRONG: [nav setToolbarItems:[NSArray arrayWithObjects:addButton, nil]]; 
// CORRECT (for ipad apps): 
[nav.topViewController setToolbarItems:[NSArray arrayWithObjects:item1, item2, nil] animated:NO]; 
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:nav]; 
1
  1. [자기 setToolbarItems [NSArray를 arrayWithObject : settingsButton]; 기본적으로 왼쪽 및 오른쪽 상단 바 버튼이 아닌 탐색 컨트롤러의 하단 도구 모음을 채 웁니다.

  2. 기본적으로 맨 아래 도구 모음은 표시되지 않습니다. 를 표시하려면 [self.navigationController setToolbarHidden을 : NO] 호출하지합니다

  3. 다음은 관련 문서입니다 - UINavigationController가 클래스 참조 도구 모음 : 내비게이션 컨트롤러와 관련된

사용자 정의 도구 모음. (판독 전용)

@property (비 원자, 판독 전용)가 UIToolbar * 툴바 토론이 속성은 탐색 컨트롤러에 의해 관리되는 기본 모음에 대한 참조를 포함한다. 이 도구 모음에 대한 액세스는 도구 모음에서 작업 시트를 표시하려는 클라이언트의 경우에만 제공됩니다 ( ). 은 UIToolbar 개체를 직접 수정하면 안됩니다.

이 도구 모음의 내용은이보기 컨트롤러와 연결된 사용자 지정보기 컨트롤러를 통해 관리됩니다. 탐색 스택에있는 각보기 컨트롤러에 대해 UIViewController의 setToolbarItems : animated : 메서드를 사용하여 도구 모음 항목의 사용자 지정 집합을 할당 할 수 있습니다.

이 툴바의 표시 여부는 toolbarHidden 속성에 의해 제어됩니다. 도구 모음은 또한 현재 표시되는보기 컨트롤러의 hidesBottomBarWhenPushed 속성 을 따르고 필요에 따라 자동으로 을 표시하고 보여줍니다.

관련 문제