UIViewController viewDidLoad vs. viewWill표시됨:적정한 분업은 무엇입니까?
할당해야 할 작업의 유형에 대해 항상 약간 명확하지 않았습니다.viewDidLoad
대.viewWillAppear
순식간에UIViewController
아류의
예: 나는 내가 가지고 있는 앱을 하고 있습니다.UIViewController
하위 클래스가 서버를 누르고 데이터를 가져와 보기에 제공한 다음 해당 보기를 표시합니다.에서 이것을 하는 것의 장단점은 무엇입니까?viewDidLoad
대.viewWillAppear
?
viewDidLoad는 한 번 수행해야 하는 작업입니다.보기가 나타날 때마다 viewWillAppear가 호출됩니다.당신은 UI 레이블 텍스트 설정과 같이 뷰 DidLoad에서 한 번만 수행하면 되는 작업을 수행해야 합니다.그러나 사용자가 보기를 볼 때마다 보기의 특정 부분을 수정해야 할 수 있습니다. 예를 들어 "지금 재생" 보기로 이동할 때마다 iPod 응용 프로그램이 가사를 맨 위로 스크롤합니다.
그러나 서버에서 항목을 로드할 때는 대기 시간도 고려해야 합니다.모든 네트워크 통신을 viewDidLoad 또는 viewWillAppear에 패킹하면 사용자가 보기를 보기 전에 실행되므로 앱이 잠시 중지될 수 있습니다.먼저 사용자에게 어떤 종류의 활동 표시기와 함께 채워지지 않은 보기를 보여주는 것이 좋습니다.네트워킹이 완료되면 1~2초 정도(또는 실패할 수도 있음)의 시간이 지나면 보기에 데이터를 채울 수 있습니다.이것이 어떻게 이루어질 수 있는지에 대한 좋은 예는 다양한 트위터 클라이언트에서 볼 수 있습니다.예를 들어 Twitterrific에서 작성자 세부 정보 페이지를 볼 때 보기에는 "로딩 중...네트워크 쿼리가 완료될 때까지.
위치 지정에 viewDidLoad를 사용하는 것은 약간 위험하므로 경계가 설정되어 있지 않으므로 피해야 합니다.예상치 못한 결과를 초래할 수 있습니다(여러 가지 문제가 있었습니다...)
이 게시물은 다양한 방법과 각 방법에서 어떤 일이 일어나는지에 대해 꽤 잘 설명합니다.
현재 1회성 init 및 positioning을 위해 view를 사용하려고 합니다. 깃발을 들고 나타났어요, 혹시 다른 추천할 사람이 있으면 알려주세요.
처음에는 tableView와 함께 ViewDidLoad만 사용했습니다.와이파이가 끊긴 상태에서 테스트할 때 장치를 비행기 모드로 설정하여 와이파이가 반환되어도 테이블이 새로 고쳐지지 않는다는 것을 깨달았습니다.실제로 백그라운드 모드가 YES in -Info.plist로 설정된 홈 버튼을 눌러도 장치에서 tableView를 새로 고칠 수 있는 방법이 없는 것 같습니다.
내 솔루션:
-(void) viewWillAppear: (BOOL) animated { [self.tableView reloadData];}
종속: 보기를 열 때마다 데이터를 로드해야 합니까?아니면 딱 한 번?
- 빨간색: 그들은 매번 바꿀 필요가 없습니다.일단 적재되면 원래 상태로 유지됩니다.
- 보라색: 시간이 지남에 따라 또는 로드할 때마다 변경해야 합니다.동일한 3명의 제안된 사용자가 팔로우하는 것을 보고 싶지 않습니다. 화면으로 돌아올 때마다 다시 로드해야 합니다.그들의 사진이 업데이트 될 수도 있습니다...당신은 5년 전 사진을 보고 싶지 않을 것입니다.
viewDidLoad:
당신이 어떤 처리를 하든지 간에 한 번은 해야 합니다.
viewWilLAppear:
페이지가 로드될 때마다 변경해야 하는 모든 처리.
레이블, 아이콘, 단추 제목 또는 개발자가 입력한 대부분의 데이터는 일반적으로 변경되지 않습니다.이름, 사진, 링크, 버튼 상태, 목록(테이블 보기 또는 컬렉션 보기에 대한 입력 배열) 또는 대부분의 데이터입력자사용자는 대개 변경을 수행합니다.
언급URL : https://stackoverflow.com/questions/1579550/uiviewcontroller-viewdidload-vs-viewwillappear-what-is-the-proper-division-of
'sourcecode' 카테고리의 다른 글
마리아드 10.3.29 시작...END 문이 DELECT와 함께 작동하지 않습니다. (0) | 2023.07.08 |
---|---|
SQL Server에서 지정된 월, 일 및 연도의 요일 이름을 개별적으로 가져옵니다. (0) | 2023.07.08 |
GCC가 .cpp 파일을 C로 컴파일하도록 강제 적용 (0) | 2023.07.03 |
로그를 역순으로 가져오는 방법은 무엇입니까? (0) | 2023.07.03 |
Jooq native 쿼리가 연결 정보를 사용하지 않습니다. (0) | 2023.07.03 |