2016-06-15 9 views
1

私は、ユーザーが詳細ビュー(複数の詳細ビューを持っています)のためにシーンを選ぶことを可能にするメニューのようなマスタービューを備えたスプリットビューコントローラを持っています。 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。

答えて

0

「現在のコンテキスト」は、それがどこから呼び出されても、マスターまたは詳細だけに表示されるはずです。私はなぜそれが最初に正しく動作しないのかわかりませんが(私はあなたが望むものだと理解していますが)、別のオプションを選択したときに動作します。とにかく、あなたが望むものを達成するためには、「現在のコンテキストを超えて」使うのをやめてください。それは画面全体にフォグvcを表示します。

関連する問題