2012-02-24 1 views
1

계층 적 탐색 모드와 임의의보기 교환 모드가 모두있는 iOS 앱용 인터페이스를 디자인하고 있습니다. 한 모드에서 주어진 뷰의 레이아웃은 다른 모드에서 해당 뷰의 레이아웃과 다릅니다.UINavigationController를 시뮬레이트하는 방법/방법 pushToViewController 메서드

사용자가이 모드들간에 앞뒤로 전환 할 수 있기를 바랍니다. 분리 된 하위 뷰가 UINavigationController의 계층 구조에서 2 레벨 아래에 해당 상세 뷰를 가지고 있다고 가정 해보십시오. 사용자는 해당 내비게이션 세부 정보보기로 직접 전환 할 수 있어야합니다. 거기서 그는 UINavigationController 계층을 위아래로 탐색하거나 그가 왔던 격리 된 하위 뷰로 다시 전환 할 수 있어야합니다.

은 UINavigationController는 다시 계층 구조까지를 탐색 할 때 당신이 수준을 건너 뛸 수 있도록하는 방법 popToViewController:animated:을 가지고 있지만 그것은 당신이 계층 구조에서 낮은 수준으로 직접 이동할 수 있도록 것입니다 해당하는 pushToViewController:animated:이 없습니다. 그것이 합리적입니다. 탐색 컨트롤러는 대상보기를 표시하기 전에 중간에있는보기를 스택으로 밀어 넣어야합니다. 그러나 일반 밀어 넣기 방법 중재보기/s, 나는 시각적 인 플래시뿐만 아니라 성능에 치명적인 영향을 미칠 것으로 생각합니다.

내가 개입보기 및 투명하게 일시적으로 설정 한 중간에 볼 수있는 animated:NO으로 두 번 연속 pushViewController를 호출하여 pushToViewController을 시뮬레이션 할 경우에, 나는 합리적인 성능을 얻을 것인가? 또는 탐색 모드가 요청되면 탐색 컨트롤러의 스택 뒤에 격리 된 뷰을 넣어야합니까? 여러 호출을 pushViewController,으로하고 탐색 컨트롤러를 앞쪽으로 이동 하시겠습니까? 아니면 UINavigationController를 사용하지 않고 UIView의 add/remove/insert/exchangeSubview을 통해 모든 테이블 뷰 스타일 탐색을 수동으로 수행해야합니까?

답변

1

저는 setViewControllers:animated:이 당신이 원하는 것을 할 것이라고 믿습니다.

스택에 여러 개의보기 컨트롤러를 추가하고 바로 마지막보기로 이동하려면 전체 스택을 명시 적으로 설정하고 UINavigationController에 마지막으로 직접 탐색 애니메이션을 적용 시키십시오.

NSMutableArray* controllers = [NSMutableArray arrayWithArray:[self.navigationController viewControllers]]; 
[controllers addObject:newController1]; 
[controllers addObject:newController2]; 
[self.navigationController setViewControllers:controllers animated:YES]; 

이보기 스택에 newController1newController2를 밀어하고 newController2에 전환을 애니메이션.

+0

고마워, 그래, 그게 내가 원하는거야! "탐색 스택의 항목에 액세스하기"아래에 나열 되었기 때문에'animated : '매개 변수가 제공하는 단서에도 불구하고 액세스 된보기를 * 표시 *하는 데 사용할 수 있다는 것을 몰랐습니다. 시간을 내서 미안해. – Wienke

+0

문제 없음 :) 도움을 주셔서 감사합니다. – Aaron

관련 문제