2016-08-21 1 views
0

내 애플은 모든 뷰는 4 개 버튼은 A, B, C로 이동하자 와 TabBar의가보기 (A)에 D프로그래밍 방식으로 여러 탐색 컨트롤러를 추가하는 방법은 무엇입니까?

stacks

을 시작 내가 현재 가지고하는 것은이 시나리오는 다음과 같습니다

A, B, C, D 중 하나로 이동하면 상단의 모든 항목을 지우고 스택 하단 으로 돌아갑니다.

하지만 난 B 1에서 이동할 때이 네비게이션은 이제

1: A>1 
2: B>3>7 
3: C>2>5>6>8>7 
4: D>9>1 

일어난 예를 들어,이 이미지에서처럼 행동 할 필요가, 나는 B

의 상단 인 다시 7로 이동

질문 : 하나 이상의 내비게이션 컨트롤러가 필요하다고 생각합니까? 또한 appDelegatedidFinishLaunchingWithOptions 함수에이 코드를 삽입하면 프로그래밍 방식으로 하나 이상의 탐색 컨트롤러를 수행하는 방법은 무엇입니까? 그리고 A, B 푸시 또는로드 뷰 컨트롤러 사이에 사용할 것은 무엇입니까?

////////// NC 

    let storyboard = UIStoryboard(name: "Main", bundle: nil) 

    let mainView  = storyboard.instantiateViewControllerWithIdentifier("selectLocation") as! selectLocation // 1 Home 
    let searchView  = storyboard.instantiateViewControllerWithIdentifier("2") as! Search // 1 Home 
    let friendsView  = storyboard.instantiateViewControllerWithIdentifier("3") as! Friends // 1 Home 
    let meView   = storyboard.instantiateViewControllerWithIdentifier("4") as! Me // 1 Home 

    var nav1 = UINavigationController() 
    nav1.viewControllers = [mainView] 
    nav1.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()] 

    var nav2 = UINavigationController() 
    nav2.viewControllers = [searchView] 
    nav2.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()] 

    var nav3 = UINavigationController() 
    nav3.viewControllers = [friendsView] 
    nav3.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()] 

    var nav4 = UINavigationController() 
    nav4.viewControllers = [meView] 
    nav4.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()] 

    UINavigationBar.appearance().barTintColor = UIColor(red: 176.0/255.0, green: 190.0/255.0, blue: 105.0/255.0, alpha: 1.0) 
    UINavigationBar.appearance().tintColor = UIColor.whiteColor() 
    UINavigationBar.appearance().barStyle = UIBarStyle.BlackTranslucent 

    self.window!.rootViewController = nav1 
    self.window?.makeKeyAndVisible() 

    ////////// NC 
+0

공지 사항 : - 해결 방법이 필요하면 샘플 github 프로젝트를 준비하고 여기에 링크 할 것입니다. – DeyaEldeen

+0

GitHub 샘플을 사용할 수있는 기회가 있으십니까? – SQLiteNoob

답변

1

당신은 당신이 rootviewcontroller으로 자신의 UIViewController에 모든 navigationcontrollers를 추가 할 수있는 탭 네비게이션 컨트롤러 내부의 일반적인 응용있는 navigationController을 포함 AppDelegate에있는 일반 UINavigationController가 있어야합니다.

이렇게하면 해당 경로 내에서 내비게이션을 처리 할 각 탭에 대해 내비게이션 컨트롤러를 사용하게됩니다. 사용자가 탭 사이를 탐색 할 경우 해당 탭에는 해당 탭에 최신 viewcontroller가 있습니다. 이 프로그래밍 방식으로하려면 탐색 컨트롤러 개체를 만들고 rootviewcontroller 스택의 첫 번째로 설정합니다.

이렇게하면 각 탭에 대해 탐색을 시작할 수 있습니다.

private lazy var navigationController:UINavigationController? = { 
    let navigationController = UINavigationController(rootViewController: InitialViewController()) 
    navigationController.setNavigationBarHidden(true, animated: false) 
    return navigationController 
}() 

는 모든 사용자 탭 당신은 푸시 또 다른 UIViewController에

self.navigationController?.pushViewController(vc, animated: animated) 

다시 스택에 갈 수있을 것이다 방법이 필요합니다.

당신은 당신이 그것을

self.navigationController?.setViewControllers([vc], animated: animated)

내가 포함하는 래퍼 클래스를 생성하는 좋은 방법을 생각 하는데요해야하는 경우가 rootViewController이 방법을 변경하는 응용 프로그램있는 navigationController 및 NavigationControllers과 밀어 방법의 배열/필요한 경우 탐색을 설정하십시오. 이 유사하게 보입니다 question

도움이 되었기를 바랍니다.

+0

좋은데, 나는 "private lazy ...."단편을 대표단에 넣었다. 4를 만들지 않는 이유는 무엇입니까? 나는 당신이 오직 하나만 창조 한 것을 볼 수 있습니다, 당신은 상세한 예제를 제공해 줄 수 있습니까? 이 질문은 여전히 ​​어떻게 든 나를 혼란스럽게합니다 ...[네 개의 내비게이션 컨트롤러 추가]를 질문의 코드에 추가하십시오. – DeyaEldeen

+0

예, 방금 예를 하나 추가했습니다. – TomCobo

+0

죄송합니다.이 작품을 만들고, iOS 도서의 섹션을 읽고, 여전히 혼란스럽고, 많은 것을 검색하고 많은 실험을하고, 위에 게시 된 링크와 다른 링크를 적용하는 데 어려움을 겪고 있습니다. 이것에 대해 github에 대한 예가 없습니까? 내가 게으른 var를 넣을 곳에 붙어있어, 도와 줘요? 나는 각 탭보기에 그 var을 넣으려고 했어요. – DeyaEldeen

관련 문제