0

UITabBarController이있는 앱이 있으며 그 중 하나는 탐색 컨트롤러 용으로 구성됩니다.앱 시작시 내비게이션 컨트롤러에보기 추가

특정 로직에 기반하여 애플리케이션 시작 시간에 탭 내부의 탐색 컨트롤러에 다른 루트보기를 첨부해야합니다.

인터페이스 빌더에서 쉽게 수행 할 수 있습니다. 왜냐하면 시작시 인터페이스보기 빌더가이 상황에서 나에게별로 도움이되지 않는다는 것을 알아야하기 때문입니다.

내 응용 프로그램 대리인 클래스의 applicationDidFinishLaunching 메서드에서 이것을 수행해야 할 필요가 있다고 생각합니다. 어떻게 든 관심있는 탭을 가져와 내비게이션 컨트롤러에보기를 푸시할까요?

어떻게하면됩니까?

감사합니다.

답변

0

그래서 내가 내 아래 applicationDidFinishLaunching 메소드에서 한 일은이었다

// get the array of tabs 
NSArray *tabBarArray = tabBarController.viewControllers; 
// in my case the navigation controller I'm interested in is in the 4th tab 
UINavigationController *navigationController = [tabBarArray objectAtIndex:4]; 

if(someLogic == true) { 
    ViewController1 *viewController1 = [[viewController1 alloc] initWithNibName:@"View1" bundle:nil]; 
    [navigationController pushViewController:viewController1 animated:NO]; 
    [viewController1 release]; 
} 
else { 
    ViewController2 *viewController2 = [[viewController2 alloc] initWithNibName:@"View2" bundle:nil]; 
    [navigationController pushViewController:viewController2 animated:NO]; 
    [viewController2 release]; 
} 

모든 것이 잘 작동.

0

당신은 올바른 길을 가고 있습니다. 앱 대리인의 applicationDidFinishLaunching 메소드에서 조건이 무엇이든 살펴보고 UINavigationController의 루트보기 컨트롤러로 설정할 올바른 것을 선택해야합니다.

로그인 화면이라고 생각하나요? 그리고 이전 세션에서 캐시 된 로그인이 있으면 다시 표시하지 않습니까? 그게 다야?

응용 프로그램 위임자에서 해당 메서드를 살펴보면 기본 루트보기 컨트롤러가 인스턴스화되어 Nav 컨트롤러에 푸시 된 위치를 확인할 수 있습니다. if() 문 안에 해당 코드를 복사하면됩니다. 나는 이것을 해냈다. 그것은 간단하다.

관련 문제