uinavigationbar에서 뒤로 버튼을 클릭하면 뷰 다시 로드
-
20-08-2019 - |
문제
응용 프로그램은 행성, 달 등에 대한 정보를 보여줍니다.행성 목록을 표시하므로 사용자가 행성을 선택하고 세부 정보를 확인한 다음 북마크/북마크 해제할 수 있습니다.사용자에게 선택한 행성의 세부 정보를 보여주는 뷰가 있으며 여기에는 북마크 추가/제거 버튼도 포함되어 있습니다.사용자가 해당 버튼을 클릭하면 해당 북마크가 추가/제거되고 현재 보기 위에 다른 보기가 푸시되어 사용자에게 북마크가 삭제되었음을 알립니다.
이제 문제는 사용자가 상태 보기에 표시된 탐색 표시줄 왼쪽에 있는 뒤로/행성 세부정보 버튼을 클릭하고 행성 세부정보 보기로 돌아갈 때 여전히 추가/제거(이전에 표시된 항목) 버튼이 표시된다는 것입니다. 이제 내가 작성한 코드에 따라 (이전에 로드된 버튼에 따라) 제거/추가되어야 합니다.
내가 이해할 수 있는 것은 사용자가 뒤로 버튼을 클릭하면 이전 보기가 다시 로드되지 않고 상태 보기만 팝업된다는 것입니다.사용자가 상태 보기에서 뒤로 버튼을 클릭할 때 앱에서 setNeedsDisplay를 실행하거나 북마크 세부정보 viewDidLoad 코드를 다시 로드할 수 있는 방법이 있나요?
아니면 다른 해결책이 있습니까?
북마크를 방금 제거/추가했지만 버튼은 여전히 추가/제거를 요청하고 있다고 생각하기 때문에 사용자에게는 매우 혼란스럽습니다.
해당 상태 보기는 코드의 다른 섹션에서 사용자에게 작업 결과를 표시하는 데 사용되므로 코드를 변경할 수 없습니다. 또는 이전 보기를 확인하고 행성 세부 정보인지 확인한 다음 확인할 수도 있습니다. 내용을 다시 로드하세요...
해결책
viewDidLoad 메소드에서 버튼을 설정하는 코드를 가져와서 viewWillAppear로 옮깁니다.뷰에 다시 들어가면 버튼이 올바르게 업데이트되어야 합니다.
다른 팁
해결책을 찾았습니다.그러한 코드(popViewController 또는 그러한 이벤트 이후에 변경되는 버튼)는 viewWillApear에 작성되어 무슨 일이 있어도 뷰가 로드될 때마다 실행되도록 해야 합니다.
irc.freenode.net의 #iphonedev에 있는 Quentarez와 crackity_jones에게 감사드립니다.
대리인을 올바르게 설정하고
- (void)navigationController:(UINavigationController *)navigationController
willShowViewController:(UIViewController *)viewController
animated:(BOOL)animated
{
NSLog(@"navigationController willShowViewController");
}