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
に設定しました。これは今
まだ動作していない、間違っている私の人生を理解することはできません –