2016-12-09 1 views
0

내가보기 컨트롤러 A, B와 C새로 고침 "루트"데이터

A는 탐색 컨트롤러의 루트 뷰 컨트롤러가있는 UINavigationController가와 스토리 보드를 사용하고있는 시작시 일부 데이터를 가져옵니다. 해당 데이터가있는 B보기 컨트롤러와 교차 할 A 행을 클릭하면 B에서 한 행을 클릭하면 C 뷰 컨트롤러와 연결됩니다.

나중에 내 응용 프로그램에서 나는 C 안에있어 사용자가 데이터를 새로 고침하려고합니다. 다시 말해 뷰 컨트롤러의 루트 데이터를 다시 가져와야합니다.

사용자가 데이터를 새로 고친 후 내 탐색 계층 구조를 다시 작성하려면 어떻게해야합니까? A에서 데이터 소스를 업데이트 한 다음 B에서 데이터 소스를 업데이트하고 마지막으로 C에서 데이터 소스를 업데이트해야합니다.

+0

는 단순히 C에 표시되고있는 데이터를 새로 고칠 수 없습니다 시작하기에 좋은 장소라고 생각 A와 C. 에서 액세스 할 수있는 또 다른 오브제의 모든 논리를 넣어해야 ? 또는 전체 루트를 새로 고쳐야합니까? –

+0

모든 데이터를 업데이트해야합니다. 그렇지 않으면 일치하지 않는 상태가됩니다. –

답변

0

앞서 계획을 세우는 일일뿐입니다. 그렇지 않습니까? 귀하의 프로그램이므로 직장은 시설에 이 필요합니다. 이 상황에서는 아무 것도 "다시 빌드"할 필요가 없습니다.하지만 그렇게 할 수는 있습니다. A와 B 둘 다 C를 보여 주더라도 여전히 존재하기 때문에 필요한만큼 의사 소통 만하면됩니다. 데이터 가져 오기 전원이 A에만있는 경우 새로 고침을 요청하고 업데이트 된 데이터를 받기 위해 C가 호출 할 수있는 방법을 A에 제공하십시오. A와 B가이어서 으로 표시되면으로 다시 표시됩니다 (사용자가 C에서 팝백하기 때문에). 물론 viewWillAppear을 사용하여 각각의 인터페이스도 업데이트합니다. 그러나 순간에 A와 B는 단지 객체 인이고, 객체 들간의 통신은 결국 객체 지향 프로그래밍에 관한 것입니다.

+0

음 "가져온 데이터"가 있습니다. B는 A의 데이터의 서브 세트를 나타내고 C는 B의 데이터의 서브 세트를 나타냅니다. 가져 오기를 다시 한 후에 A, B 및 C의 데이터 속성을 업데이트해야한다고 생각합니다. 의미 네비게이션 컨트롤러에 대한 참조를 얻고 네비게이션 스택에 액세스하고 데이터를 업데이트하려면 뷰 컨트롤러 속성에 액세스해야합니다. –

+0

그것은 분명히 한 가지 방법입니다, 내가 여기서 설명하는 것처럼 : http://stackoverflow.com/a/40986685/341994 그러나 아마도 다른 방법이 있습니다. 예를 들어, A에 대한 참조를 A에서 B로 그리고 B에서 C로 전달할 수 있습니다. 또는 더 멀리 나아가서 A에서 B로, B에서 C로 참조를 전달할 수 있습니다. 새로 고침을 수행하는 방법에 대한 지식이있는 도우미 객체로 래핑됩니다. 그것이 내가 그걸 할 수있는 방법입니다. Apple은이 패턴을 "종속성 주입"이라고 부릅니다. 각각의 연속적인보기 컨트롤러에 필요한 모든 것을 제공하십시오. – matt

0

당신은 내가이 post

관련 문제