2

내 상황은 여기에서 찾을 수있는 다른 모든 예제와 다릅니다. 탭 기반 앱이 있습니다. 탭 중 하나에서 사용자는 한 번에 웹 서버에서 여러 파일을 다운로드하는 버튼을 누를 수 있습니다.경고 : 분리 된보기 컨트롤러에보기 컨트롤러를 표시하는 것은 바람직하지 않습니다.

이러한 다운로드를 수행하기 위해 NSOperation을 사용하여 내장 된 종속성을 활용할 수 있습니다. 다운로드는 모두 백그라운드 스레드에서 발생하므로 앱이 계속 응답합니다. 최종 다운로드가 완료되면 alertController를 화면에 표시하여 사용자에게 완료되었음을 알립니다.

사용자가 경고 컨트롤러 내가 경고를 제시 다른 탭 선택한 경우 :

"권장하지 않습니다 분리 된 뷰 컨트롤러에 뷰 컨트롤러를 제시"그들은 다운로드를 시작 같은 탭에서 여전히 경우를 그때 나는 경고를 얻지 못한다.

[self presentViewController:alertController animated:YES completion:nil]; 

[self.view.window.rootViewController presentViewController:alertController animated:YES completion:nil]; 

로하지만 결과는 alertController 제시되지 않습니다이다 : 나는 대체했습니다.

주 스레드에 alertController를 표시합니다.

나는 다운로드가 완료되었을 때 사용자가 어떤 탭보기 컨트롤러를 사용하는지 예측할 방법이 없으며이 경고를 정말로 없애고 싶습니다.

나는 ObOS-C로 macOS와 Xcode 8에서 개발 중이다.

+0

[주의 : 분리 된 뷰 컨트롤러에 -Presenting 뷰 컨트롤러를 권장하지 않습니다]의 사용 가능한 복제 (https://stackoverflow.com/questions/19890761/warning-presenting-view-controllers-on-detached-view- controllers-is-discourage) –

답변

4

다운로드 결과를 UITabBarController처럼 들리는 최상위보기 컨트롤러로 위임해야합니다. UITabBarController은 확실히 knows which tab is selected이거나 경고를 자체적으로 표시 할 수 있습니다.

[self.view.window.rootViewController presentViewController:viewController animated:YES completion:nil]; 

충돌를 해결하려면 기각하면서 뷰 컨트롤러 :

+0

굉장 !! 이 코드는 내 문제를 해결했다. [self.tabBarController presentViewController : alertController animated : YES completion : nil]; – Scooter

1

쓰기 현재 VC에서 탐색 컨트롤러 또는 VC 제시에 경고를 해결하기

[self dismissViewControllerAnimated:YES completion:nil]; 

또는

childViewController에서 뷰를 표시하면 해당 경고가 표시됩니다. 이를 피하기 위해 childViewController의 부모에 대한 뷰를 제공 할 수 있습니다.

[self.parentViewController presentViewController:viewController animated:YES completion:nil];