2016-10-20 4 views
1

UITabBarにモーダルを表示する必要があるボタンが1つあります(Swift 2)。私は検索して検索していくつかの解決策を試しましたが、どれも解決しませんでした。私は最近、それがまっすぐに見えるこのリンクを見つけた:https://www.hackingwithswift.com/example-code/uikit/how-do-you-show-a-modal-view-controller-when-a-uitabbarcontroller-tab-is-tappedとそれに従うことを試みているが、役に立たない。UITabBarボタンからモーダルビューを表示する

私の初期表示コントローラは、私のメインテーブルバーコントローラclass MainTabBarController: UITabBarControllerです。それはviewDidLoad()だから、私はコードを追加した(私はリンクが古いバージョンのSwiftを使っているかもしれないと思うので、リンクのものから文法の変更を加えなければならなかった):self.tabBarController?.delegate = UIApplication.sharedApplication().delegate as? UITabBarControllerDelegate

私はその後、私もMainTabBarControllerでそれを入れてみましたが、それはまた、動作しませんでした、私のAppDelegate.swiftにUITabBarControllerDelegateを追加し、AppDelegate.swiftに次のように実装:

私は「CreateNavControllerViewController」ことを指摘したいです私が表示したい "CreateViewController"のルートビューコントローラです。しかし、私は私の中間のタブバーのボタン(デフォルトのTabBarControllerからViewへのリンク)をCreateNavにリンクしています。それはCreateのrootVCです。モーダルでは、上部にナビゲーションバーがありたいので、なぜ私はCreateNavを提示したいのですか?

func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool { 
    print("inside shouldSelect VC") 
    if viewController is CreateNavControllerViewController { 
     print(" viewController is CreateNavControllerVC") 
     if let newVC = tabBarController.storyboard?.instantiateViewControllerWithIdentifier("CreateNavController") { 
      print("  if let newVC = ...") 
      tabBarController.presentViewController(newVC, animated: true, completion: nil) 
      return false 
     } 
    } 
    print("skipped everything, returning true") 
    return true 
} 

プリントステートメントは印刷されません。だから私はかなり困惑している。誰でもSwift 2でモーダルビューを表示するためのUITabBarのボタンを取得する方法のソリューションを提供できますか?

編集:(shouldSelectViewController :)を(shouldSelectViewController viewController :)に変更しましたが、まだ何もありません。ただ、(関数が呼び出されません)

EDIT2何も印刷されません、代わりに、モーダルの通常のタブバービューの変更を行います。私はそれが、考え出した私のタブバーを継承するために最初に示しVCを設定しましたと思いますUITabBarControllerDelegateからその関数を追加し、viewDidLoad()をself.tabBarController?.delegate = selfに設定しました。これは今

答えて

1

を動作しているようだあなたは、あなたのUITabBarController

+0

まだ動作していない、間違っている私の人生を理解することはできません –

0

self.delegate = UIApplication.sharedApplication().delegate as? UITabBarControllerDelegate

self.tabBarController?.delegate = UIApplication.sharedApplication().delegate as? UITabBarControllerDelegate

を変更する必要があり、ナビゲーションコントローラにネストあなたのコントローラですか?その場合は、ナビゲーションコントローラの最初のビューコントローラが特定のコントローラであるかどうかを確認する必要があります。

+1

これは質問への答えを提供しません。 [類似の質問を検索する](// stackoverflow.com/search)、またはページの右側にある関連するリンクされた質問を参照して回答を見つけることができます。関連しているが異なる質問がある場合は、[新しい質問をする](// stackoverflow.com/questions/ask)、コンテキストの提供に役立つこのリンクを追加してください。参照:[質問する、回答を得る、気を散らす](// stackoverflow.com/tour) – Rob

関連する問題