2017-06-12 6 views
0

私は正しく解決できないようなジレンマがあります。私はMain_Pageを持っていて、Menu_SubviewやProfile_Subviewなどの異なるサブビューを持っています。私の問題は、Dismissを使用するか、またはSuperviewを削除するかわからないため、アプリがクラッシュすることになります。私はMain_PageからProfile_Subviewに行く場合などIOSスワップスーパービューを削除するかサブビューで削除するかを確認するにはどうすればいいですか

のために、私はこのように戻ることができ、それが

@IBAction func backAction(_ sender: UIButton) { 
     if let viewWithTag = self.view { 
      viewWithTag.removeFromSuperview() 

     } 
    } 

私はProfile_SubviewにMenu_SubviewするMain_Pageから行く場合、私は使用することはできません動作しますそれがクラッシュし、私はどのように私は、pでスーパーやサブビューがあるかどうかbackAction機能で検出することができます。この

@IBAction func backAction(_ sender: UIButton) { 
     self.dismiss(animated: true, completion: nil) 
    } 

を使用する必要があるため、上記のコード前のコントローラ?

すべての私のサブビュー

は次のように開かれている以下の

@IBAction func Menu_Action(_ sender: Any) { 

     let Popup = UIStoryboard(name: "Main", bundle: 
     nil).instantiateViewController(withIdentifier: "Menu_Subview") 
     as! Menu_Subview 

     self.addChildViewController(Popup) 
     Popup.view.frame = self.view.frame 
     self.view.addSubview(Popup.view) 
     Popup.didMove(toParentViewController: self) 
    } 

答えて

1

何オープンaddChildViewControllerとして - あなたはそれがViewControllerあるので、却下することにより閉じ、そして開くときaddSubviewとすべきである - removeFromSuperviewことによってそれを閉じて、理由別のビューで表示されます。 ViewControllerのスーパービューがないので、クラッシュします。あなたがそれらの多くを開いて、あなたが戻って適切な方法でそれを書き換えることを望んでいない場合は、あなたのビューがスーパービューを持っているかどうかを確認するだけで、ブール値に応じて、

関連する問題