0

보기 컨트롤러에서 탐색 스택의 부모로 데이터를 전달하는 여러 방법을 보았습니다. 꽤 일반적이어서, 이것들 중 어느 것도 그것을 해결하지 못하는 것 같습니다. 원하는 작업 :다시 탐색 화살표를 누를 때 부모보기 컨트롤러에 데이터 전달

  1. 탐색 스택에 하위보기 컨트롤러를 푸시합니다. 상위 뷰 컨트롤러의 prepareForSegue(_:sender)에 속성을 설정했습니다.
  2. 하위보기 컨트롤러의 속성을 편집하십시오. 여기까지는 모든 것이 작동합니다.
  3. 왼쪽 위 모서리에있는 화살표 다시 단추를 누르면 자식 뷰 컨트롤러가 자동으로 팝업되고 편집 된 데이터를 부모에게 다시 전달해야합니다.

스토리 보드에서 unwind 동작을 설정할 수는 있지만 쉬울 것입니다.하지만 화살표 버튼은 런타임에만 표시되기 때문에 불가능합니다. 그 화살표를 누를 때 prepareForSegue(_:sender)이 자식에게 호출되지 않는 것 같습니다. 자식 또는 부모 중 어느쪽에도 canPerformUnwindSegueAction(_:fromViewController:withSender) 또는 unwindForSegue(_:towardsViewController) 또는 segueForUnwindingToViewController(_:fromViewController:identifier:)이 아닙니다.

으로 내가 아이의 viewWillDisappear 방법을 무시하고 탐색 스택에서 부모를 액세스, 어딘가 아이를 액세스 할 수있는 부모를위한 방법이 있어야합니다, 또는이 바로 나쁜 디자인 될 수 here을 제안? 어떤 도움을 주셔서 감사합니다! iOS 7 이상을 타겟팅하고 있습니다.

+0

부분적으로 개인적인 취향이지만 MVC-esque 디자인은이 문제를 모두 피할 수 있습니다. 두 번째 VC에서 모델이 변경되면 첫 번째 VC로 다시 팝업 할 때 같은 소스에서 모델을 업데이트하면됩니다. – PeejWeej

+0

http://stackoverflow.com/questions/19343519/pass-data-back-to-previous-viewcontroller 이 도움이 될 수도 –

+0

@ PEEJWEEJ하지만 이것은 정확하게 문제가 어떻게 아이를 터뜨릴 때 부모에 액세스 할 수 있습니까? – Nickkk

답변

0

당신이 좋아하는 위임 및 설정을 사용할 수 있습니다

  • 아이는 부모 컨트롤러의 재산으로한다.
  • 부모는 자식 컨트롤러의 대리인 속성입니다. (위임 항상 곁에 약한 속성)

당신은 단지 child.delegate을 사용하여 자녀에서 부모에게 언제 어디 액세스 할 수 있습니다. 그리고 재산을 통해 부모로부터 아이.

관련 문제