私は2つのビューコントローラoneVC.swiftとtwoVC.swiftを持っています。 twoVC.swiftの背景色を透明にして、oneVC.swiftにtwoVC.swiftをオーバーレイとして表示したいとします。添付ファイルを参照してください。背景色が「クリア」の新しいView Controllerをプッシュ
私は次のコードでしようとしています:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let homeVC = storyboard.instantiateViewController(withIdentifier: "twoVC") as! twoVC
homeVC.providesPresentationContextTransitionStyle = true;
homeVC.definesPresentationContext = true;
homeVC.modalPresentationStyle = .overCurrentContext
self.navigationController!.present(homeVC, animated: false, completion: nil)
このコードは完璧に機能していますが、現在のコードの問題は、私はさらにtwoVCからの新しいコントローラをプッシュすることができないということです。これは1VC.swiftで表示されるため、迅速です。 そして、私はこのような
pushViewController
を使用する場合:私はtwoVC.swiftの透明性を達成することはできませんよ、これを使用して
self.navigationController?.pushViewController(homeVC, animated: false)
。 だから
を使用して透明性を有する第一のビューコントローラ上に第2のビューコントローラをプッシュすることができる任意の可能性は、予め
おかげpushViewController
あります。
「UIView」を使用してoneVC上にオーバーレイすることを検討しましたか?独立した '.xib'を作り、それをあなたが望むようにデザインしてから、' UIView.transition'メソッドを使って 'UIViewController'のプッシュアニメーション効果をシミュレートすることができます。 VCをオーバーレイすることは、一般にあなたが何を達成するかではありません。 – ThunderStruct
委任を使用して、oneVCにユーザーが2VCで何かをしたことを通知します。 – Andrea
あなたは2VCの前に1つのナビゲーションコントローラを取って、2VCに接続し、それにストーリーボード識別子を与え、通常のコードに従ってナビゲーションコントローラを提示する必要があります。そのナビゲーションコントローラから、他のビューコントローラにプッシュできるようになりました。 –