2017-07-03 15 views
1

私はUITabBarControllerを持っています。インターフェイスビルダーを使用して、私は複数のビューコントローラを追加しています。これらのViewControllerはすべて同じクラスですが、変更されるのはパラメタだけです。UITabBarControllerからviewControllerを初期化する

UITabBarControllerを拡張したいので、ビューコントローラが初期化されたときにこのパラメータを追加できますが、UITabBarController拡張でこれを行う方法がありません。これを行う正しい場所はどこですか?

+0

現在、コントローラは「Interface Builder」によって初期化されています。コントローラを自分で初期化していくつかのパラメータを追加する場合は、インタフェースビルダーからではなくコードからコントローラを追加する方がよいでしょう。 –

+0

それは意味がありますが、パラメータを追加する方法が必要です...私はビュー内のviewcontrollersをつかんで、タブバーコントローラの負荷を加え、そこにパラメータを追加したと思った...しかし、私は汚い感じ! –

+0

'UITabbarController'のデリゲートを見てください。そこには関数[didSelectViewController](https://developer.apple.com/documentation/uikit/uitabbarcontrollerdelegate/1621173-tabbarcontroller?language=objc)があります。インデックスに従ってパラメータを設定します。ただし、表示するタブインデックスを選択するたびに設定されます。 –

答えて

1

また、私はこれを使用し、私はタブバーコントローラの第五のタブでビューコントローラの上にポップアップを表示したいような問題、 に直面していました:

func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool { 

    if(viewController == tabBarController.viewControllers?[4]){ 
     let storyboard : UIStoryboard = UIStoryboard(name: "AfterLogin", bundle: nil) 
     let vc = storyboard.instantiateViewController(withIdentifier: "MorePopUpVC") 
     vc.modalPresentationStyle = .popover 
     let popover = vc.popoverPresentationController 
     popover?.delegate = self 
     popover?.permittedArrowDirections = .down 
     popover?.sourceView = self.tabBar 
     popover?.sourceRect = ((self.orderedTabBarItemViews()).last?.frame)! 
     vc.preferredContentSize = CGSize(width: 120, height: 132) 
     present(vc, animated: true, completion:nil) 
     return false 
    } 
    return true 
} 

これは私が第五タブの動作を変更する方法です私はそれに役立つと思います

func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool { 

     let storyboard : UIStoryboard = UIStoryboard(name: "YOUR STORYBOARD NAME", bundle: nil) 
     let vc = storyboard.instantiateViewController(withIdentifier: "YOUR VIEW CONTROLLER IDENTIFIER") 
     if(viewController == tabBarController.viewControllers?[4]){ 
      vc.type = "PARAMETER YOU WANT" 
     } 
     present(vc, animated: true, completion:nil) 
     return false 
} 

:、

あなたは次のようにそれを使用することができます。

関連する問題