2017-05-22 13 views
0

私は画面の右側にSideBarVCを開く追加ボタンを持つViewControllerを持っています。 メインのViewController画面をもう一度タップすると、SideBarVCが終了するはずです。ParentViewControllerをタップするとChildViewControllerが閉じる

私はまず

@IBAction func click_leistung(_ sender: UIButton) { 

    leistungList = self.storyboard?.instantiateViewController(withIdentifier: "leistungVC") as! leistungVC 
    leistungList.view.backgroundColor = .clear 
    leistungList.modalPresentationStyle = .overCurrentContext 
     self.present(leistungList, animated: true, completion: nil) 

} 
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 


    self.myscrollView.endEditing(false) 
    leistungList.removeFromParentViewController() 
    leistungList = nil 
} 
+0

、私はそれはかなり何をだとは思わない子コントローラを管理する方法を理解するために、この記事を読んでますやってみたいです。最初に追加する方法を理解するために、 "SideBarVC"を開いた場所のコードの部分を共有する必要があります。 – jcaron

答えて

0

を試してみました - あなたは、新鮮なVCを削除しようとしているが、あなたはそれを取り除くために古いものへのポインタ格納する必要があります。このleistungListへのポインタを格納するvarを作成し、それを親から削除します。

var storedController: UIViewController? 
func show() { 
    // ... 
    storedController = presentedController 
} 
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 

    // Das keyboard ist weg 
    self.myscrollView.endEditing(false) 
    storedController.removeFromParentViewController() 
    storedController = nil 
} 

PS:https://developer.apple.com/library/content/featuredarticles/ViewControllerPGforiPhoneOS/ImplementingaContainerViewController.htmlあなたのコードは、新しいコントローラをインスタンス化して、その親から削除しているで

+0

私はこれを試して、その動作しません。フローがtouchesBegan()に到達していません。 –

関連する問題