0

인사말! 나는 UITabBarUINavigationController의 객체와 뷰가 준비되어있는 MainView.xib을 사용하는 작업중인 iPhone 응용 프로그램 (huzzah!)이 있습니다.출시시 presentModalViewController를 통해 한 번만 UIViewController 표시

이제이 조합에 일회성 등록보기를 추가해야합니다. 이보기는 전에 UITabBar을 app-launch 할 때 앞에 표시되고, 사용자로부터 정보를 얻거나, 서버에 등록하거나 기존 등록을 확인한 다음 키 체인에서 일부 데이터를 제거합니다. (! 후자 당신에게 에리카 Sadun 감사)

내가 통제하에있어 등록 및 키 체인 부분 (키 체인이 이미 등록의 증거를 표시하는 경우, 우리는.이 특정보기를 보여주는 생략), 그러나 것을 보여주는 초기 일회성보기는 예상보다 까다로워졌습니다.

나는 무엇이 잘못되었는지를보기 위해 너무 가깝다고 생각합니다. 나는 정말로 그것이 조종사 오류이고, Rube Goldberg를 필요로하지 않기를 바란다!

앱 등, 여기서 상기 의 UITabBar 제어기 놓여 로딩 MainView.xib함으로써 시작 :

여기 시나리오이다. al. 논쟁을 위해서 등록보기를 보여줘야한다고 가정 해 봅시다. 또한, 우리는 모달 외관을 가지고 싶습니다, 그래서 그것은 아래에서 위로 날아갈 것입니다. 그런 다음 작업이 끝나면 위임자 (대개 App Delegate)에게 전화를 걸어 원래 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는 내부에 UIView 것을 유의 있지만 탐색 컨트롤러. 우리는 탭 모음 항목의 탐색 컨트롤러 (예 : 등록 정보를 검토)의 일부로 재사용 할 수 있도록 분리 된 상태로 유지하려고합니다.

계속 진행 중입니다. 우리는 모달 가지를 제시의 의도와 네비게이션 컨트롤러를 만들 :

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

우리는 다음을 기준으로 탭 표시 줄 컨트롤러를 사용하여, 우리의 모달 VC를 제시하고 alloc'ed 비트를 놓습니다.

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

첫 번째 관찰. 무언가가 이것이 아주 단순한 것임을 말해줍니다. 첫 번째 탭 표시 줄 항목의 탐색 막대와보기가 모달보기와 같이 나타납니다. Yeccch!

tabBarController.selectedViewController = nil; 

우리는 정말/모달 VC 이루어집니다 (우리가 대리인을때까지 탭 표시 줄을 사용할 필요하지 않습니다 또한, 사전에 전무로 선택 VC를 설정하려고하는 것은 효과가 없습니다 그 일이 언제 우리에게 알려주는지).

왜 나는 탭바를 사용하여 귀찮게합니까? 글쎄, 뭔가가 모달 VC의 모자를 걸어 필요로 보이는데, 나는 그 밖에 무엇을 사용해야할지 모르겠다.

유일한 방법입니까? 그냥 Registration VC와 Tab Bar를 불필요하게 묶어 두는 것처럼 보이고 냄새가납니다.

단서 환영합니다!

답변

1

Default.png의 내용을 모른 채 대답하지 못합니다. HIG를 따르고 있고 빈 tabBarController를 표시한다고 가정하면 다소 복잡한 레이어를 제안합니다. 아래쪽보기 : tabBarController.view 가운데보기 : UIImageView : Default.png 위쪽보기 : 아래쪽에 위치하는 등록보기 화면

시작시 등록보기를 표시하고 수동으로 애니메이션을 적용한 다음 애니메이션이 완료되면 그 아래에있는 UIImageView를 제거하십시오. 등록이 완료되면 등록보기를 수동으로 움직여 tabBarController를 표시하십시오. 시작시 등록보기가 필요하지 않은 경우 UIImageView에 애니메이션을 적용하여 사라지거나 그냥 제거하면됩니다.

OTOH의 경우 HIG를 따르지 않고 대신 스플래시 화면을 표시하면 상황이 조금 쉬워집니다. 이 같은 층 : 하단보기 : tabBarController.view 평면도 :있는 UIImageView : NO하고있는 UIImageView 페이드 아웃 : Default.png

당신이 등록을 보여줄 필요가있는 경우는, 애니메이션으로 presentModalViewController을한다. 그렇지 않다면, UIImageView를 페이드 아웃하십시오.

사진이 담긴 긴 설명입니다. 이해가 되길 바랍니다. 주목할 점은 UIImageView : Default.png을 추가하면 앱이 시작될 때 가장 먼저 보이는 것이고,이를 사용하여 등록 또는 tabBarController 로의 전환을 적절하게 안내 할 수 있다는 것입니다.

+0

감사합니다. 닐! 나는 분명히해야한다 : 그것은 HIG (스플래시 스크린 - 나는 알고있다, boo hiss)를 따라 가지 않는다. 이미 탭 바에 페이드 아웃하고 있습니다 (http://is.gd/4GnwP 참조). 이제는 스플래시의 음소거 버전 (상태 표시 줄의 경우 20px로 축소 된 이미지보기) 인 중간 "시작"VC로 사라집니다. 거기에서 우리는 잠시 멈추고, 환영의 경고를 던지고, 모달 VC (애니메이션 포함!)를 보여줍니다. 그 후, 우리는 임시 VC로 돌아 왔습니다. 한 번 더 고마워, 그리고 마지막 공개, 탭 모음에 메인 애플 리케이션에 최종 페이드 아웃과 함께 가져. 아휴! 이제 멋지게 재생됩니다. 당신의 방법을 다시 읽으십시오. 고마워!! –

+0

OK! 내가 이해할 수 있도록 게시물을 다시 읽었습니다. 화면이 보이지 않는 등록보기 (수동 애니메이션 위/아래)에서 탐색 표시 줄 (컨트롤러?)의 위치는 어디입니까? 저는 항상 VC를 nav 컨트롤러에 밀어 넣는 데 익숙합니다. 그리고 이것이 내가 전에 걸려 넘어지고있는 곳이라고 생각합니다. 그 VC, 모달 또는 다른 방법을 쓰지 않아도되는 곳이 없었습니다. 그래서이 임시보기 컨트롤러 (날개에서 기다리고있는 탭 막대 컨트롤러 대신)가 생겼습니다. 하지만 당신이 말한 것은 레이어링이 기본이 아닌 무엇이든하는 것입니다. 아, 우리가 UE를 위해하는 일. :) –

+0

글쎄, 당신은 ViewController보다는 평범한 옛날보기를 사용할 수 있습니다. 또는 Navbar가 필요한 것과 같이 ViewController에 등록을해야하는 이유가 무엇입니까? –