문제

인사말! 나는 작동하는 iPhone 앱 (Huzzah!)이 있습니다. MainView.xib 완전히 재고가 포함되어 있습니다 Uitabbar 몇 가지 uinavigationcontroller 대상과 전망.

이제이 믹스에 일회성 등록보기를 추가하라는 요청을 받았습니다. 이보기가 나타납니다 ~ 전에 그만큼 Uitabbar App -Launch에서 사용자로부터 정보를 가져 오거나 서버에 등록하거나 기존 등록을 확인한 다음 Keychain에서 일부 데이터를 다람쥐하십시오. (키 체인에 이미 등록 증명이 표시되면이 특정 견해를 보여주는 건너 뜁니다.)

통제중인 등록 및 키 체인 부분 (후자에 대해 에리카 사둔에게 감사합니다!), 그러나 초기 일회성보기가 내가 예상했던 것보다 까다로운 것으로 판명되고 있음을 보여줍니다.

나는 문제에 너무 가까워서 무엇이 잘못되었는지보기에 너무 가깝다고 생각합니다. 나는 그것이 파일럿 오류이며 너무 Rube Goldberg가 필요하지 않기를 바랍니다!

시나리오는 다음과 같습니다.

앱은로드로 시작합니다 mainview.xib, 위에서 언급 한 사람이 있습니다 Uitabbar 컨트롤러, et. 알. 논쟁을 위해, 우리는 그 등록 견해를 보여 주어야한다고 가정 해 봅시다. 또한, 우리는 그것이 모달 모양을 갖기를 원하므로 하단에서 날아갑니다. 그런 다음, 우리가 완료되면, 우리는 그것을 기각하고, 대의원 (대부분 앱 대의원)에게 전화하여 원본을 계속하도록 지시 할 수 있습니다. Uitabbar.

// Normally, the Tab Bar Controller's view is added to the window ... still do this?
[window addSubview:tabBarController.view];

// We could now set up a VC like so. Mostly harmless. (I know, "mvc" is an unfortunate abbreviation in this case.)
RegistrationVC *mvc = [[RegistrationVC alloc] initWithNibName:@"RegistrationView" bundle:nil];

주목하십시오 RegistrationView.xib a uiview 내부이지만 NAV 컨트롤러는 없습니다. 예를 들어 탭 바 항목의 NAV 컨트롤러의 일부로 재사용 할 수 있도록 디퍼링을 유지하려고합니다 (예 : 등록 정보를 검토하기 위해).

계속 움직입니다. 우리는 모드로 사물을 제시하려는 의도로 NAV 컨트롤러를 만듭니다.

UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:mvc];

그런 다음 Modal VC를 사용하여 탭 바 컨트롤러 기초로서, alloc'ed 비트를 해제하십시오.

[tabBarController presentModalViewController:nc animated:YES];
[nc release];
[mvc release];

첫 번째 관찰. 무언가가 나에게 이것이 단지 평범하다는 것을 말해줍니다. 첫 번째 탭 바 항목의 Nav Bar와 View가 모달 뷰가 들어오는 것처럼 보일 수 있습니다. yeccch! 또한, 선택한 VC를 미리 미리로 설정하려고 시도하는 것은 효과가 없습니다.

 tabBarController.selectedViewController = nil;

우리는 정말로 탭 막대를 사용할 필요가 없습니다. ~ 후에 모달 VC가 완료되었습니다 (그리고 우리는 그러한 일이있을 때 알려주는 대의원이 있습니다).

왜 탭 막대를 귀찮게 하는가? 글쎄, 내가 필요한 것 같아요 무엇 그 모달 VC의 모자를 걸고, 나는 무엇을 사용할 것이 무엇인지 모른다.

이것이 유일한 방법입니까? 그것은 단지 등록 VC와 탭 막대를 불필요하게 묶는 것처럼 보이며, 냄새가납니다.

단서를 환영합니다/감사합니다!

도움이 되었습니까?

해결책

Default.png가 표시하는 내용을 모르면 이에 대답하기가 어렵습니다. HIG를 따르고 빈 TabBarController를 표시한다고 가정하면 다소 복잡한 레이어링을 제안합니다 : 하단보기 : TabBarController.VIEW 중간보기 : UIIMAGEVIEW : UIIMAGEVIEW : DEFAULT.PNG 상단보기 : 화면 하단 아래에 등록보기

시작시 등록보기를 표시 해야하는 경우 수동으로 위쪽으로 애니메이션을하고 애니메이션이 완료되면 아래의 UIIMAGEVIEW를 제거하십시오. 등록이 완료되면 TabBarController를 공개하기 위해 등록보기를 수동으로 애니메이션하십시오. 시작시 등록보기가 필요하지 않은 경우 UIImageview를 애니메이션하여 사라지거나 제거하십시오.

Otoh Hand, 만약 당신이 히그를 따르지 않고 대신 종류의 스플래시 화면을 보여 주면 상황이 조금 쉬워집니다. 이와 같은 레이어 : 하단보기 : tabbarcontroller.view 상단보기 : uiimageview : default.png

등록을 표시 해야하는 경우 애니메이션을 사용하여 ModalViewController를 발표하십시오. 그렇지 않다면 uiimageview를 퇴색시킵니다.

그것은 사진과 함께 긴 설명입니다. 두드러진 점은 앱이 시작될 때 가장 먼저 볼 수있는 Uiimageview : default.png를 추가하고,이를 사용하여 등록 또는 TabbarController로 전환하는 데 적절하게 사용하는 것이 좋습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top