2017-10-27 5 views
0

추가에서 parentviewController 다시 아이 뷰 컨트롤러가 데이터를 전송합니다아래로 childViewController

다시 parentViewController에 데이터를 전송하는 방법
// 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) 

} 

, 안내하시기 바랍니다.

+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로 정보를 다시 보낼 수있는 다른 방법이 있지만 프로젝트에 따라 다릅니다. 자주하는 행동입니다. 어쩌면 재사용을 위해 대리인이 필요할 수도 있습니다.

관련 문제