2012-02-11 4 views
1

iPhone에서 내 UIPopovercontroller에 NavigationController (제목/버튼 포함)의 배경을 표시하려면 어떻게해야합니까? 순간iPhone에서 UIPopoverController 내의 NavigationController-background를 표시하는 방법

는 그 다음과 같습니다

enter image description here 내에서

PopoverView-의 ViewController :

InfoView *iv = [[InfoView alloc] initWithNibName:@"InfoView" bundle:nil]; 


    UINavigationController *uc = [[UINavigationController alloc] initWithRootViewController:iv]; 


    self.pop = [[UIPopoverController alloc] initWithContentViewController:uc]; 
    [self.pop setDelegate:self]; 
    [self.pop presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:true]; 
:

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 

self.navigationController.navigationBar.hidden = NO; 
self.navigationController.navigationBarHidden = NO; 

self.navigationItem.title = @"self.navigationItem.title"; 
} 

하는 팝 오버를 호출3210

은 다음과 같아야합니다

enter image description here

+0

@ Rayfleck, iPhone에서도 사용할 수 있습니다!당신은 질문을 읽고 그림을 보았습니까 ??? 조숙하지 마십시오. – rakete

+0

http://stackoverflow.com/questions/6371508/uipopover-title-and-sub-title - 그게 당신이 찾고있는가요? – Jacksonkr

+2

@rakete - 예, 그림을보고 혼란스러워했습니다. iOS 5.0 라이브러리 UIPopoverController 클래스 참조는 다음과 같이 말합니다.'Popover 컨트롤러는 iPad 장치에서만 사용됩니다. 다른 장치에서 하나를 만들려고하면 예외가 발생합니다. ' – Rayfleck

답변

0

은 내가 어디에 문제가 그건 의심 당신이, 당신의 InfoView의 컨트롤러의 코드를 더 붙여 넣기해야합니다 생각합니다.

+0

더 이상 코드가 없습니다. – rakete

+1

그런 다음 문제가있는 곳입니다.) –

+0

도움이되는 답변에 감사드립니다. 어떤 코드를 기대합니까? – rakete

1

라인 [self.pop presentPopoverFromBarButtonItem:se.. 전에 코드에 이것을 추가

uc.modalPresentationStyle = UIModalPresentationCurrentContext; 

modalPresentationStyle property 설명서를 참조하십시오.

+0

anweser 감사합니다. 그러나 불행하게도 그 배경은 여전히 ​​보이지 않습니다. – rakete

2

처음에는 UINavigationController 자체 배경이 없으므로 콘텐츠보기 컨트롤러의 배경을 보여줍니다. 탐색 컨트롤러가있는 팝업을 성공적으로 표시 할 수 있으면 InfoView를 확인하십시오. 보기에는 배경이 있습니까? - [UIPopoverController initWithContentViewController '

둘째, 나는 이유를 아이폰에 다른 구성으로 코드를 실행하기 위해 여러 번 시도했지만 항상 인해 캐치되지 않는 예외 'NSInvalidArgumentException '에 오류

응용 프로그램을 종료받은 :] 이 실행되지 않을 때 호출됩니다. UIUserInterfaceIdiomPad.

그리고 저에게는 놀라운 것이 없습니다. 당신이 그것을 일하게 만들 수있다하더라도, 애플은 당신의 신청서를 거절 할 수도 있습니다. 2.1 충돌하는 앱은 거부됩니다. - 코드를 여러 기기에서 테스트하고 결과를 확인하기 만하면됩니다.

+0

나는 내용의 배경이 필요 없다. 내비게이션 컨트롤러 상단에있는 제목과 버튼을 포함하는 막대의 배경을 보여주고 싶습니다. UIPopoverController 클래스의 메서드를 재정의해야하기 때문에이 오류가 발생합니다. 유감스럽게도 내가 말할 수있는 것은, 현재 코드에 액세스 할 수 없기 때문입니다. – rakete

2

코드

InfoView *iv = [[InfoView alloc] initWithNibName:@"InfoView" bundle:nil]; 


UINavigationController *uc = [[UINavigationController alloc] initWithRootViewController:iv]; 


self.pop = [[UIPopoverController alloc] initWithContentViewController:uc]; 
[self.pop setDelegate:self]; 
[self.pop presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:true]; 

입니다 완벽한 그냥 기본 탐색 컨트롤러를 숨기고 InfoView.xib의 XIB에 내비게이션 바을 추가하고보기의 해고 나있는 tableview의 세부 사항을 수행하기 위해 거기 cancelButtonAction 쓰기 선택. 그것은 잘 작동, 같은 방식으로 한 이미지를 확인하십시오, 그리고 그것은 잘 작동 날 믿어. enter image description here

+1

감사합니다. 이제 내비게이션 막대가 보입니다. 하지만 표준 파란색 배경이 있습니다. Popover의 경계의 그라디언트에서 "통합"된 내비게이션을 원합니다. – rakete

+0

원하는 유형의 그라디언트를 변경할 수 있습니다. UIBarStyleDefault, UIBarStyleBlack, UIBarStyleBlackOpaque와 같은 탐색 모음 스타일을 선택하십시오. 또한 막대의 색상을 변경할 수도 있습니다. – Meet

0

배경보기를 클래스로 설정해 보셨습니까?

[pop setPopoverBackgroundViewClass:bgView]; 
관련 문제