2017-01-02 1 views
0

작업을 수행하기 전에 사용자에게 다양한 정보를 묻는 앱이 있습니다. 사용자가 모든 정보를 입력하면 UIApplication.shared.openUrl(url: url)을 입력 한 다음 self.navigationController?.popToRootViewController(animated: true)을 입력합니다. 앱이 루트보기 컨트롤러로 다시 이동합니다. 그러나 마지막 뷰 컨트롤러의 탐색 항목 프롬프트는 이제 루트 뷰 컨트롤러의 탐색 항목에 포함됩니다.popToRootViewController 프롬프트를 지우지 않음

왜 이런 일이 벌어지고 있고 그것을 고치는 좋은 방법이 있는지 이해하십시오. 루트 뷰 컨트롤러가 다시 나타나면 프롬프트를 ""으로 설정할 수 있지만 문제를 해결하고 증상을 완화하지는 않습니다.

업데이트

당 @Shad의 대답은, 나는 아래의 코드를 내보기 컨트롤러를 업데이트 한 예상대로 모든 노력하고 있습니다.

override func viewWillDisappear(_ animated: Bool) { 
    super.viewWillDisappear(animated)  
    self.navigationItem.prompt = nil 
} 
+0

어떤 탐색 항목 프롬프트가 있습니까? 관련 코드로 질문을 업데이트하십시오. – rmaddy

+0

탐색 항목 프롬프트를 설정하는 코드가 없습니다. 탐색 항목 프롬프트는 스토리 보드 파일에서 모두 정적입니다. – Jake

+0

내가 가지고있는 것을 다시 만들려고했지만 아무런 문제가 없습니다. 보기에서 – bubuxu

답변

0

이유는 이 창에 추가됩니다하라는 메시지를 표시하고 심지어 메시지를 표시하는 부모 뷰 - 컨트롤러가 추가 된 볼, 현재 표시되지 않는 것입니다. 몇 가지 코드를 공유하면 세부 정보를 확인할 수 있습니다.

그러나 RootViewController로 돌아 가기 전에 프롬프트를 닫는 방법이 있습니다. -(void) viewWillDisappear:(BOOL)animated을 사용하여 프롬프트에 프롬프트를 닫을 수 있습니다. -(void) viewWillDisappear:(BOOL)animated에서 removeFromSuperview()을 호출하여 프롬프트 인 부모보기 컨트롤러에서보기를 제거하면됩니다. 프롬프트이 UIView라고 가정합니다.

+0

내 문제가 해결되었습니다. 그러나 다른보기 컨트롤러 (예 : 모달) 스택에 오는 경우 작동하지 것이라고 생각합니다. 마지막 뷰 컨트롤러로 돌아 가면 프롬프트가 비어있게됩니다. 나는 아직도 이것이 왜 일어나고 있는지에 대해 궁금합니다. – Jake

+0

프롬프트의 코드를 공유 할 수 있습니까? – Shad

+0

viewWillDisappear에서 제안한 것 이외의 프롬프트를 설정하는 코드가 없습니다. 프롬프트 메시지는 스토리 보드 파일에 모두 설정됩니다. – Jake

관련 문제