2014-01-07 1 views
0

viewcontroller가 있습니다. poptoviewcontroller 메서드에서 해당 viewcontroller를 사용하려면 appdelegate.m 파일에 해당 개체를 만들었습니다. 이제 일단 appdelegate 파일에 객체를 만들고 viewcontroller를 push 할 때 viewdidload를 단지 1 번 호출합니다. 하지만 두 번째로 viewdidload를 호출하지 않습니다. 내가로드 할 때마다 컨트롤러가로드 할 때마다로드 할 구성 요소가 있습니다. 무엇을해야합니까 ?? appdelegate.m 파일에 객체를 만들지 않고 popToViewController 메소드에서 viewcontroller를 사용하는 다른 방법이 있습니까ViewDidLoad는 내비게이션 시간에 한 번만 호출합니다.

저는 뷰 컨트롤러 A, B, C, D가 4 개 있습니다. A에서 B로 이동 중입니다. 그리고 B에 viewdidLoad에서로드하는 일부 구성 요소가 있습니다. 이제는 A에서 B 로의 흐름에서 구성 요소의 서버로부터 가치를 얻고 있습니다. 그리고 B로 표시합니다. 이제 사용자가 값을 변경하려는 경우 B에서 B 컴포넌트 값을 변경하기 위해 B에서 C로 리디렉션됩니다. 또한 그는 D로 리다이렉트하고 D에서 B 컴포넌트 값으로 B로 팝핑합니다. 이제 내가보기에 B 코드를 작성한다면 C에서 B로 돌아갈 때 A에서 B로 이동할 때 얻은 값을로드 할 것입니다.

+1

개체의 한 인스턴스가 메모리에 한 번만로드되기 때문에 문제가 발생합니다. iOS에서 뷰 컨트롤러 및 라이프 사이클의 기술을 향상 시키려면 https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html을 방문하십시오. 이동 된 viewcontroller에서 – holex

답변

3

viewWillAppear 또는 viewDidAppear (이 마지막 코드 첫 번째 이후에 호출 됨). ViewDidLoad는 ViewController가 생성 될 때만 호출됩니다. 그런 다음 네비게이션 스택에 살게하므로 더 이상 호출되지 않습니다.

자세한 내용은 thread on stackoverflow을 참조하십시오. 당신의 편집으로

편집

전체 질문은 다른 하나가됩니다. 당신이 당신의 ViewController viewWillAppear 또는 viewDidAppear을 보여줄 때마다 대의원을 호출하기를 원한다면 해답이됩니다.

나는 당신이 복잡한 것을 끝내 었다고 생각합니다. 당신이 AppDelegate에서 B를 바꾸고 있다는 것을 이해하고 있습니까? 그렇다면 나는 C에서 왔고 당신의 상태를 viewWillAppear으로 업데이트 할 때 이전 상태를 가진 B에 어떤 문제도 볼 수 없습니다. AppDelegate에서 B에 포인터를 사용하고 그것을 변경하면 viewWillAppear에 문제가 없어야합니다.

문제에 대한 여러 가지 해결책이있을 수 있으며 모두 해당 사례에 따라 다르지만 모델을 분리하는 것이 좋습니다. B 데이터를 보유하는 싱글 톤을 만들 수 있고 viewWillAppear에서 그 데이터를 가져 와서 표시 할 수 있습니다. 그러면 C와 D는 그 싱글 톤에 대해서만 변경을 수행합니다. viewWillAppear 또는 viewDidAppear 방법을 사용하는 것보다보기가 화면에 나타날 때마다 다시하고 다시 할 몇 가지 작업이있는 경우

+0

다른 페이지로 이동할 수 있습니다. 컴포넌트의 값을 변경하기위한 viewcontroller. 그래서 viewwillappear를 사용하면 내 vlaue를 보유하지 않습니다. – vivek

+0

메모리 제약으로 인해 UIViewController가 언로드되지 않는 한 이것은 사실입니다. 이 경우,'viewDidLoad'가 다시 호출됩니다. – Peres

+0

@vivek 특정 문제가있는 경우 질문에서보다 구체적으로 설명해야합니다. 예를 보여 주시겠습니까? –

0

viewDidLoad 방법은, 클래스의 초기화에했다.

+0

내 편집 ..... 참조 – vivek