2017-12-15 24 views
1

하나의 UIViewController에 대해 두 개의 다른 탭이 있어야합니다. 프로그래밍 방식으로 UITabBarController를 구현합니다.UITabBarController의 탭에 대해 동일한 ViewController를 사용하는 방법

아래의 코드는 두 개의 다른 탭을 표시하는 것처럼 작동하지만 firstVC를 선택하면 검은 색 화면이 나타나고 secondVC가 좋습니다.

어떻게 동일한 ViewConetroller에 대해 두 개의 다른 탭을 사용할 수 있습니까?

class VPTabBarController: UITabBarController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let myWebView = WebKitViewController.storyboardInstance() 

     let mainVC = MainViewController.storyboardInstance() 
     mainVC?.tabBarItem.title = "Search" 
     mainVC?.tabBarItem.image = UIImage(named:"search") 

     let firstVC = myWebView 
     firstVC?.source = "first" 
     let accountNavigationVC = UINavigationController(rootViewController: firstVC!) 
     accountNavigationVC.tabBarItem.title = "First" 
     accountNavigationVC.tabBarItem.image = UIImage(named:"first") 

     let secondVC = myWebView 
     secondVC?.source = "second" 
     let myTripsNavigationVC = UINavigationController(rootViewController: secondVC!) 
     myTripsNavigationVC.tabBarItem.title = "Second" 
     myTripsNavigationVC.tabBarItem.image = UIImage(named:"Second") 

     let viewControllerList = [ mainVC, firstVC, secondVC ] 

     viewControllers = viewControllerList as? [UIViewController] 
    } 
} 

답변

1

나는 당신이 다른보기 아무것도, 당신은 두 탭에 갖고 싶어 그냥 myWebView의 뷰에 포함됩니다 두 래퍼 뷰 컨트롤러를 생성하여 해킹 할 수 같아요. 이제이 래퍼 인스턴스를 두 개 생성합니다. 두 인스턴스 모두 하위 뷰로 동일한 myWebView을 포함합니다.

이제 동일한보기가 두 개의 다른보기의 하위보기가 될 수 없음을 기억해야합니다 (한 개의 슈퍼보기 만 가질 수 있음). 래퍼에 서브 뷰로 myWebView.view을 추가하면 이전 슈퍼 뷰에서 제거됩니다. 따라서 래퍼가 표시 될 때 탭 변경 사항을 다시 추가해야 함 (래퍼가 제공 될 때마다 제시된 래퍼에 서브 뷰로 myWebView을 추가해야 함).