2009-06-04 3 views
18

저는이 두 번 건너 왔습니다.모달보기를 제공하면 탐색 막대가 가끔씩 표시되지 않습니다.

때때로 다음의 코드를 사용 :

[self.navigationController presentModalViewController:aViewController animated:YES]; 

표시보기를하지만, 네비게이션 바는 다음 숨겨져 있습니다.

내가 쓸 수 있습니다 :

[self.navigationController setNavigationBarHidden:NO]; 

내 마음의 콘텐츠에, 사방이 더 효과 생각할 수 있습니다.

아무도 이것에 부딪쳤습니까?

바보 같은 짓을하고 있습니까?

답변

38

아니요,이 문제도 발생했습니다. UIViewController 기반 클래스와 함께 모달보기 컨트롤러를 제공 할 때 호출하는 탐색 컨트롤러의 탐색 모음을 모달로 확장하지 못하는 문제가 있습니다. 모달보기는 전체 화면을 덮습니다. UINavigationController를 만들고 UIViewController 기반 클래스를 밀어 넣은 다음 presentModalViewController를 탐색 컨트롤러의 인스턴스에 연결하면 문제를 해결할 수있었습니다.

좋아 : 상단의 탐색 모음을 가지고 저를 허용

UIViewController *vc = [[UIViewController alloc] init]; 
UINavigationController *cntrol = [[UINavigationController alloc] initWithRootViewController:vc]; 
[self presentModalViewController:cntrol animated:YES]; 
[cntrol release]; 

.

당신의 특별한 경우에 도움이 될지 확신 할 수 없지만, 내가 제안 할 수있는 유일한 것은 전화 상단에서 44px를 막는 UIAnimation을 사용하여 모달의 동작을 복제하는 것입니다. 그러면 원래 탐색 모음이 계속 표시됩니다.

+1

오, 나는 바보 야. 맨 위의 탐색 컨트롤러, 툴바, 툴바가 필요하지 않았습니다. 감사합니다 –

+0

그건 그렇고, 지난 5 시간 내 머리에 그 노래를 넣어 주셔서 감사합니다. 크리스마스 인 것 같아. –

+0

오랫동안 내 머리 속을 달려왔다 :-) –

1

은 어쩌면 이것은 분명,하지만 당신은 모달보기으로 수행하고이를 기각 할 것하면, 당신은 당신의 모달 VC에서 같이해야합니다 :

[parentController dismissModalViewControllerAnimated : YES];

여기서 parentController는 모달 뷰를 표시하는 vc에 대한 참조입니다.

+1

그냥 해주세요 [self dismissModalViewControllerAnimated : YES]; 과 같은 효과가 있습니다. – Jonny

+0

네, 네가 맞아 조니, 어쩌면 다른 문제 때문에 자기가 나를 위해 일하지 못했을거야. 누가 알지 .... : P –

2

@HeatMiser는 탐색 표시 줄에 항목을 표시 할 수 없음을 둘러싼 "버그"를 해결하는 훌륭한 방법을 보여줍니다. 그러나 이것이 프레젠테이션의 버그 일지 모르겠다. 모달 연산은 기본 뷰의 인터페이스 테마보다 우선해야한다. 모달 연산의 테마를 기본 UI 테마와 유사하게 만드는 것은 좋지만 탐색 뷰를 사용하여 실제 모달 뷰를 래핑하는 것은 나에게 잘못된 것입니다 (약간의 동작을 얻으려는 추가 뷰 객체).

대신 다음은 저에게 효과적이며 메일 프로그램 (iPhone)에서 "새 메시지"가하는 것과 동일한 동작을 제공합니다.

IB에서 UIToolBar를 모달 화면 상단에 배치하고 (탐색 모음과 유사) UIBarButtonItem과 그 사이에있는 유연한 스페이스 바 버튼 항목을 "취소"및 "저장"하여 버튼을 왼쪽 및 오른쪽으로 정렬합니다. . 그런 다음 UIToolBar 위에 가운데에있는 UILabel을 추가하십시오 (글꼴 Helvetica, Bold, 크기 18은 탐색 모음 제목과 일치하는 것처럼 보임). 모달 UIViewController의 IBAction에 버튼을 연결하면 작업이 완료됩니다.

1

탐색 컨트롤러 활성이 있다면, 당신은 그냥 사용해야

[self.navigationController pushViewControllerAnimated : 방법]

다른보기 컨트롤러를 슬라이드하는 동안 자신과 사용자가 일관된 사용자 인터페이스에 '자동'뒤로 버튼 지원을 제공합니다.

내비게이션 컨트롤러를 사용하고 나면 모달 뷰 컨트롤러를 표시하면 화면의 사용 가능한 영역이 확대되어야합니다. 그런 다음 멋진 애니메이션을 사용하여 네비게이션 컨트롤러가 구현 한 "작업"또는 "단계"에서 벗어나고 있음을 사용자에게 알려야합니다.

관련 문제