私は、ユーザーが詳細ビュー(複数の詳細ビューを持っています)のためにシーンを選ぶことを可能にするメニューのようなマスタービューを備えたスプリットビューコントローラを持っています。 detailViewシーンの1つに、私は半透明の背景を持つので、View Controllerをモーダルに、「Over Current Context」を表示するボタンがあり、そのフォグエフェクトを作成したかったのです。この特定のdetailView(それをTodayViewControllerと呼ぶことができます)は、アプリケーションがロードされるときの初期ディテールビューコントローラでもあり、ユーザーがマスタービュー(メニュー)から新しいView Controllerを選択したときだけ変更されます。UISplitViewController詳細から現在のコンテキストを表示します。
これは私がコードにどのような意味です:
アプリはちょうど開始するとき:
splitViewController.viewControllers[1] // returns TodayViewController
をユーザーがメニューから選択した場合:
だから、splitViewController.viewControllers[1] // returns a different view controller
私が持っている問題は、私がTodayViewControllerの子ビューコントローラをモーダルに表示し、「現在のコンテキストを超えて」提示すると、子VCはマスタービュー(メニュー)と詳細ビュー(TodayViewController)の両方に表示され、画面全体が霧の影響を受けるようにします。 これは私が望む効果です
しかし、別のビューコントローラ(メニューから)を選択してTodayViewControllerを選択し、子VCを表示しようとすると、今すぐ詳細ビューに表示されます。霧の効果がディテールビューとマスタービュー(メニューが再び表示される)にのみ存在することを意味します。これをどうやって解決するのですか?
私は私の説明で十分明確であることを望む。ここに私のコードの一部を以下のとおりです。
マイGlobalSplitViewController.swift:
import UIKit class GlobalSplitViewController: UISplitViewController, UISplitViewControllerDelegate { func primaryViewControllerForCollapsingSplitViewController(splitViewController: UISplitViewController) -> UIViewController? { let detailViewController = self.viewControllers[1] as! TodayViewController return detailViewController } func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController: UIViewController, ontoPrimaryViewController primaryViewController: UIViewController) -> Bool { return true } func splitViewController(svc: UISplitViewController, shouldHideViewController vc: UIViewController, inOrientation orientation: UIInterfaceOrientation) -> Bool { return false } }
TodayViewControllerがiPhoneで最初に提示されるようにGlobalSplitViewControllerが構成されているが、iPadで、それはマスターとディテールの両方を示していますビュー、uncollapsed。