-1

을 발표 한 후, 발표 뷰 컨트롤러를 해제, 그것은 정말 잘 아키텍처 아니에요 는 사용자 정의보기 컨트롤러를 모달로 표시하지만 30 초마다 표시되는보기 컨트롤러가 다시 작성됩니다.상황은보기 컨트롤러이다 ...</p> <p>을 제시 뷰 컨트롤러가 내가 작성하지 않은 일부 이전 코드 일하고

여기에 문제가 발생하면 화면에 모달이있는 경우 화면을 벗어나면 모호한 동작 (예 : 흰색 화면)이 발생합니다.

새로 작성한 컨트롤러에서 [self.presentedViewController dismissViewControllerAnimated];을 호출 해 보았습니다. 그러나 presentedViewController은 예상 한대로 nil입니다.

또한 모달보기 컨트롤러에 대한 약한 참조를 유지하고 프리젠 테이션 VC가 다시로드 될 때이 값을 이전 VC의 값으로 설정하려고했습니다. 이것은 self.customModalVC dismissViewControllerAnimated];으로 전화를 허락했다. 그러나 이것은 VC가 더 이상 스택에 존재하지 않기 때문에 앞서 언급 한 흰색 화면을 야기 할 수있다.

모든 제안 사항에 감사드립니다.

+0

왜 30 초마다 재창조됩니까? 이것은 나에게 이상하게 들린다. 나는 또한 현재 모달 뷰를 유지하는 방법을 보았는데, 아마도 당신이 뷰 콘트롤러를 가져야한다는 사실 때문에 메모리 문제를 겪을 가능성이있는 레퍼런스를 가지고 있지 않은 상태로 보여주고있다. 따라서 최선의 방법은 리팩토링/변경과 같습니다. – zero3nna

+0

그것은 네트워크 호출 때문에, 나는 그것을하는 완전히 바보 같은 방법입니다 동의합니다. 내 접근 방식이 아니었을거야. 나는 리팩토링 이외의 많은 옵션을 가지고 있지 않은 것처럼 보입니다 ... PM은 3 시간 티켓 하하로가는 4 시간 티켓을 좋아할 것입니다. –

+0

예, 재미있는 티켓처럼 들립니다. – zero3nna

답변

-1

새로 발표의 ViewController에 네비게이션 컨트롤러를 통과하십시오 :

presentedVC.navigation = self.navigationController 

내가 먼저 뷰 컨트롤러를 발표 얻을해야한다고 생각

self.dismiss(animated: false) { 
       _ = self.navigation?.popViewController(animated: true) 
      } 
+0

'UIViewController'의'navigationController' 속성은 읽기 전용입니다. –

+0

또한 모달 프리젠 테이션은 탐색 스택과 상호 배타적이므로 '팝핑'및 '푸시'가 없습니다. –

-1

을 기각하는 새로 만든 일이 추가, 그것은 마지막이 될 것입니다 스택 뷰 계층 구조에서 dismiss을 호출 한 다음 부모 인 컨트롤러를 제거하십시오. how to get top controller see here

+0

제가 제시 한 뷰 컨트롤러에 대한 참조가 이미 있습니다. 질문에서 아주 명확하게 말합니다. 나는 기각이라고 부르며 이상한 행동을 일으킨다. 질문을 철저히 읽으십시오. –

+0

죄송합니다. 모바일에서 열렸으며 뭔가 놓쳤습니다. 어쨌든, 컨트롤러를 재창조한다는 것이 무엇을 의미하는지 설명하십시오. 그리고 재현하기 전에 제시된 View Controller를 닫지 않은 이유. 그렇지 않으면 제시된 VC가 toViewControlle을 알아야한다. –

+0

Ok, 죄송합니다. 모바일에서 열렸으며 뭔가를 놓친 후에 나타납니다. 어쨌든, 컨트롤러를 재창조한다는 것이 무엇을 의미하는지 설명하십시오. 그리고 왜 재현하기 전에 제시된 View Controller를 닫지 않았습니까? 그렇지 않으면, 제시된 VC는 toViewControlle을 알고 있어야합니다. 제시된 하나의 메시지가 표시되고 해제 된 후에 나타납니다. –

관련 문제