web-dev-qa-db-ja.com

UITabBarControllerタブバーの前にViewControllerを表示し、このtabBarを非表示にします

私のプロジェクトにはUITabBarControllerがあります。そして、その1つにViewControllersボタンがあります。このボタンをクリックすると、新しいViewControllerがモーダルで表示されます。

問題は、2番目のVC=が表示されているときにtabBarControllertabBarがまだ表示されていることです。最初のViewControllerで非表示にしようとするとこのメソッドを使用したアクションopenFiltersList()

self.tabBarController?.tabBar.hidden = true

非表示になりますが、再表示しようとすると、2番目のVCを閉じたときに、このパラメーターをfalseに設定しても機能せず、tabBarは非表示のままになります。これが1番目と2番目のコードです。

最初(InvitesViewController、tabBarControllerのビューコントローラの1つ):

func openFiltersList() {

        var filtersView : UIViewController = self.storyboard?.instantiateViewControllerWithIdentifier("filtersViewController") as! FiltersViewController
        filtersView.modalPresentationStyle = UIModalPresentationStyle.OverCurrentContext


        self.presentViewController(filtersView, animated: true) { () -> Void in

            UIView.animateWithDuration(0.3, animations: { () -> Void in

                filtersView.view.backgroundColor = UIColor(red: 0.0/255.0, green: 0.0/255.0, blue: 0.0/255.0, alpha: 0.5)

            })

        }

        self.tabBarController?.tabBar.hidden = true

    }

2番目(FiltersViewController、どこにも埋め込まれていない):

@IBAction func dismiss(sender: AnyObject) { // close button action

        self.dismissViewControllerAnimated(true, completion: nil)

        var destinationVC : UIViewController = self.storyboard?.instantiateViewControllerWithIdentifier("invitesViewController") as! InvitesViewController
        destinationVC.tabBarController?.tabBar.hidden = false

    }

インターフェースにストーリーボードを使用しています。

12
vanelizarov

タブバーコントローラーから新しいビューコントローラーを提示する必要があります:

 self.tabBarController?.presentViewController(filtersView, animated: true) { () -> Void in

        UIView.animateWithDuration(0.3, animations: { () -> Void in

            filtersView.view.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5)

        })

    }
30