2016-10-03 2 views
1

가이 같은 부모 뷰 컨트롤러의 뿅을 나타나도록 나는 아이보기로 표시되는 '팝업'스타일의보기가 있습니다뷰가 하위 뷰에서 반환 될 때 함수 호출 | 스위프트

let popOverView = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("newProjectPopup") as! AddProjectViewController 
self.addChildViewController(popOverView) 
popOverView.view.frame = self.view.frame 
self.view.addSubview(popOverView.view) 
popOverView.didMoveToParentViewController(self) 

내가

self.view.removeFromSuperview() 
을 사용하고 팝업보기를 닫으려면

위 예제는 부모보기에서 viewWillAppear 또는 viewDidAppear 메서드를 호출하지 않는다는 점에서 효과적입니다. 팝업이 사라지면 부모보기 컨트롤러에서 정보를 업데이트해야합니다. 어떻게해야합니까?

+0

FYI - 포함 된 뷰 컨트롤러와 해당 뷰를 올바르게 제거하려면 'self.view.removeFromSuperview()'이상을 호출해야합니다. – rmaddy

답변

0

위임 패턴을 사용하여 상위 뷰를 업데이트 할 수 있습니다.

protocol ParentViewControllerDelegate { 
    func didUpdate(data: NSData) 
} 

class parentViewController: UIViewController, ParentViewControllerDelegate { 

    func didUpdate(data: NSData) { 
     // Update logic here 
    } 
} 

위임 패턴 그런 다음 아이 뷰 컨트롤러에 당신이 그것을 해고하기 전에 위임 didUpdate 함수를 호출 할 수 있습니다.

+0

고마워요 @ koropok, 당신이 위에서 제안한 것을 구현했습니다. 그것을 호출하려면 'var delegate : ParentViewControllerDelegate?'라는 대리자에 대한 참조를 만들었습니다. 자식 뷰에서 'delegate? .didUpdate()'를 닫은 직전에 실행하십시오. – Whereslee

+0

네 맞습니다. – koropok

+0

고정되어 있지만 popOverViews 대리자를 표시하기 전에 자체에 할당해야했습니다. 'popOverView.delegate = self' – Whereslee