2017-12-15 10 views
1

1つのUIViewControllerに2つの異なるタブが必要です。 プログラムでUITabBarControllerを実装します。UITabBarControllerのタブに同じViewControllerを使用する方法

以下のコードは2つの異なるタブを表示するように動作しますが、firstVCを選択すると、黒い画面が表示され、secondVCは良好です。

同じViewConetrollerに対して2つの異なるタブを使用するにはどうすればよいですか?

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のビューに含まれています2つのラッパーView Controllerを作成して、それをハックすることができますね。このラッパーの2つのインスタンスを作成します。両方とも、サブビューとして同じmyWebViewが含まれています。

ここでは、同じビューを2つの異なるビューのサブビューにすることはできません(1つのスーパービューのみを持つことができます)。ラッパーにサブビューとしてmyWebView.viewを追加すると、以前のスーパービューから削除されます。したがって、ラッパーが表示されるときにタブの変更をリッスンする必要があります(ラッパーが表示されるたびに、提示されたラッパーにサブビューとしてmyWebViewを追加する必要があります)。

関連する問題