문제

응용 프로그램은 행성, 달 등에 대한 정보를 보여줍니다.행성 목록을 표시하므로 사용자가 행성을 선택하고 세부 정보를 확인한 다음 북마크/북마크 해제할 수 있습니다.사용자에게 선택한 행성의 세부 정보를 보여주는 뷰가 있으며 여기에는 북마크 추가/제거 버튼도 포함되어 있습니다.사용자가 해당 버튼을 클릭하면 해당 북마크가 추가/제거되고 현재 보기 위에 다른 보기가 푸시되어 사용자에게 북마크가 삭제되었음을 알립니다.

이제 문제는 사용자가 상태 보기에 표시된 탐색 표시줄 왼쪽에 있는 뒤로/행성 세부정보 버튼을 클릭하고 행성 세부정보 보기로 돌아갈 때 여전히 추가/제거(이전에 표시된 항목) 버튼이 표시된다는 것입니다. 이제 내가 작성한 코드에 따라 (이전에 로드된 버튼에 따라) 제거/추가되어야 합니다.

내가 이해할 수 있는 것은 사용자가 뒤로 버튼을 클릭하면 이전 보기가 다시 로드되지 않고 상태 보기만 팝업된다는 것입니다.사용자가 상태 보기에서 뒤로 버튼을 클릭할 때 앱에서 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");
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top