3

내 앱에서 UINavigationController으로 작업하고 있습니다. viewDidLoad에서 루트보기 컨트롤러는 인터넷에서 정보를 수집하여 구문 분석하고 표시합니다.다시로드 루트보기 컨트롤러

UINavigationController의 다른보기로 이동 한 다음 루트 UIViewController으로 돌아 가면 컨트롤러의 정보가 다시로드되지 않습니다. 이것은 viewDidLoad이 호출되지 않는다고 생각하게합니다.

UINavigationController에 루트보기 컨트롤러가 다시 표시 될 때이 정보가 다시로드되도록하려면 어떻게 사용해야합니까?

편집 : 빠른 응답들에 대한

덕분에, 그것은 많은 것을 의미한다. 귀하의 답변과 관련하여 한 가지 더 질문 : viewWillAppear 또는 viewDidAppear? 각 장단점이 있습니까?

+0

viewWillAppear은보기가 표시되기 직전에 처리되며 viewDidAppear는보기가 스택 맨 위에 푸시 된 후에 처리됩니다. – Kyle

+0

알았어. – DGund

답변

8

당신은 viewWillAppear: 또는 viewDidAppear:을 처리해야, 당신은 Thew 보낸보기가 화면에 나타나 이전 ​​또는 이후에 발생하는 재 장전을할지 여부에 따라 달라집니다. viewDidLoad은 뷰가로드 될 때 한 번만 호출됩니다.

+0

정보가 인터넷에서 검색되어 처리되는시기에 따라, 장치에 화면을 새로 고쳐야한다고 알려주는'setNeedsDisplay'를 호출해야 할 수도 있습니다. – Kyle

+0

내 편집 된 질문을 참조하십시오. – DGund

+2

@DevinGund 다음은 귀하의 후속 질문에 대한 훌륭한 답을 제시하는 [link] (http://stackoverflow.com/a/5659007/335858)입니다. – dasblinkenlight

1

viewDidAppear, viewDidLoad은 처음으로보기를로드 한 후에 만 ​​호출해야합니다. 여기에 대한

확인 :

UIView Programattion Guide

1

당신 말이 맞아요. 전화를 안 했어요. 언제든지 UIViewController (UINavigationController 안에있는 전화 번호)을 사용하면 viewDidAppear 또는 viewWillAppear에 전화하면됩니다.


viewWillAppearviewDidAppear 전에 발생합니다. 속도 향상을 위해 비동기 방식으로 보조 스레드의 viewDidAppear에서 수행하므로 UI ​​스레드가 느려지지 않습니다. 데이터가 검색되면보기를 업데이트합니다.

1

viewDidLoad은 뷰 컨트롤러를 처음 만들 때 또는 숨겨져있어 응용 프로그램이 메모리 경고를 받았기 때문에 언로드 된 경우에만 호출됩니다. UI를 새로 고치려면 viewWillAppear: 또는 viewDidAppear:을 번갈아 구현할 수 있습니다.

관련 문제