2017-10-27 5 views
0
から戻っparentviewControllerにデータを送信

は以下のように、子ビューコントローラを追加しました:childViewController

// ParentViewController 
if ((self.delegate?.showPopupSymtomDetailViewController(view: viewController, receiver: self)) != nil) 
    { 

    } 

// ChildViewController 
//MARK: PopUpCode 
func popUpAt(parentViewController:UIViewController) 
{ 
    parentViewController.addChildViewController(self) 
    parentViewController.view.addSubview(self.view) 

    self.view.frame = parentViewController.view.frame 
    self.didMove(toParentViewController: parentViewController) 

} 

をバックparentViewControllerにデータを送信するためにどのように、案内してください。

+0

デリゲートを使用してデータを送り返していますか? –

+0

オプションの数1. NotioficationCenter 2. KVO/KVC 3.代表者とプロトコル –

答えて

0

たとえば、コールバックを使用できます。

class ParentViewController: UIViewController { 

    if ((self.delegate?.showPopupSymtomDetailViewController(view: viewController, receiver: self)) != nil) { 
    viewController = { YourString in 
      //do here whatever you want in your parent view controller 
     } 
    } 
} 

class ChildViewController: UIViewController { 
    var callbackFunc: ((String) -> Void)? //You can decide if the object you want to send back, I used String but you can change it and even you can send more than one parameters back (String, ThirViewController, Bool)... 

    func popUpAt(parentViewController:UIViewController) { 
      parentViewController.addChildViewController(self) 
      parentViewController.view.addSubview(self.view) 

      self.view.frame = parentViewController.view.frame 
      self.didMove(toParentViewController: parentViewController) 
      callBack(YourString) //Here you pass the data from ChildViewController to ParentViewController 
    } 
} 

ChildViewControllerからParentViewControllerに情報を返す他の方法がありますが、それはプロジェクトによって異なります。あなたが頻繁にやる行動です。それを再利用するために代理人が必要かもしれません。

関連する問題