인사말! 나는 UITabBar과 UINavigationController의 객체와 뷰가 준비되어있는 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를 불필요하게 묶어 두는 것처럼 보이고 냄새가납니다.
단서 환영합니다!
감사합니다. 닐! 나는 분명히해야한다 : 그것은 HIG (스플래시 스크린 - 나는 알고있다, boo hiss)를 따라 가지 않는다. 이미 탭 바에 페이드 아웃하고 있습니다 (http://is.gd/4GnwP 참조). 이제는 스플래시의 음소거 버전 (상태 표시 줄의 경우 20px로 축소 된 이미지보기) 인 중간 "시작"VC로 사라집니다. 거기에서 우리는 잠시 멈추고, 환영의 경고를 던지고, 모달 VC (애니메이션 포함!)를 보여줍니다. 그 후, 우리는 임시 VC로 돌아 왔습니다. 한 번 더 고마워, 그리고 마지막 공개, 탭 모음에 메인 애플 리케이션에 최종 페이드 아웃과 함께 가져. 아휴! 이제 멋지게 재생됩니다. 당신의 방법을 다시 읽으십시오. 고마워!! –
OK! 내가 이해할 수 있도록 게시물을 다시 읽었습니다. 화면이 보이지 않는 등록보기 (수동 애니메이션 위/아래)에서 탐색 표시 줄 (컨트롤러?)의 위치는 어디입니까? 저는 항상 VC를 nav 컨트롤러에 밀어 넣는 데 익숙합니다. 그리고 이것이 내가 전에 걸려 넘어지고있는 곳이라고 생각합니다. 그 VC, 모달 또는 다른 방법을 쓰지 않아도되는 곳이 없었습니다. 그래서이 임시보기 컨트롤러 (날개에서 기다리고있는 탭 막대 컨트롤러 대신)가 생겼습니다. 하지만 당신이 말한 것은 레이어링이 기본이 아닌 무엇이든하는 것입니다. 아, 우리가 UE를 위해하는 일. :) –
글쎄, 당신은 ViewController보다는 평범한 옛날보기를 사용할 수 있습니다. 또는 Navbar가 필요한 것과 같이 ViewController에 등록을해야하는 이유가 무엇입니까? –