2016-08-26 3 views
0

나는 아마도 이미 답변되었지만 찾을 수없는 질문이 있습니다.윈도우 계층 구조 ios

일부 웹 서비스를 호출하는 뷰가 있으며 결과가 돌아 오면 다른 뷰를 열어 결과를 표시하려고합니다. WS 호출 후 바로 그 창을 닫습니다.

지금 내 문제는 내가

UIApplication.sharedApplication().keyWindow?.visibleViewController!.presentViewController or 
UIApplication.sharedApplication().keyWindow?.visibleViewController!.childViewControllers[0].presentViewController 

같은과 presentViewController 그것을 열 때 나는 rootViewControler에 액세스하는 경우 것입니다.

이미 viewWillDisappear를 호출 한 이후 더 이상 뷰가 계층 구조에 없다는 오류가 발생합니다.

현재 상위보기가 무엇이든 관계없이 모든보기에서보기를 표시 할 수있는 방법이 있습니까?

편집 :

솔루션은 정말 못 생겼고 어리 석 었습니다. viewDidApear가 호출 될 때마다 변경되는 정적 변수가 있습니다. 이렇게하면 마지막보기가 표시됩니다. 나는 이것이 좋은 방법이 아니거나 심지어 안전한 방법이 아니라는 것을 안다. 그러나 나는 다른 어떤 생각도하지 않는다.

+0

PLZ를 사용하여 더 편리한 방법이다. – Shoaib

답변

0

네, ViewController를 다른 뷰 위에 표시하는 방법이 있지만,이 경우에는 창을 전혀 건드리지 않아야합니다. 뷰 컨트롤러 클래스에서 는 전화 통화

let viewController = ViewController() //change this to your view controller class that you want to present 
self.presentViewController(viewController, animated: true, completion: nil) 
+0

정상적으로 작동하는 경우이 문제는 UIViewController가 아니므로 응용 프로그램의 상위 뷰를 가져와야합니다. – schmru

0

통화 웹 서비스를 완료하고 코드 아래 사용하여 메인 스레드에서 뷰 컨트롤러를 탐색 직후.

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
    // do some background task 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     // update UI here 
     // navigate your view controllers 
     let vc: UIViewController = (self.storyboard?.instantiateViewControllerWithIdentifier("viewContIdentifire"))! 
     self.presentViewController(vc, animated: true, completion: nil) 
          // **OR** 
     self.navigationController?.pushViewController(vc, animated: true) 

     }); 
); 

이동 다시 VC에 좀 더 코드를 보여

// using this navigate your app to root view of ui stack 
self.navigationController?.popToRootViewControllerAnimated(true) 

// using this line of code navigate to any view   
self.navigationController?.popToViewController(viewContName, animated: true) 

// this navigate back to last view 
self.navigationController?.popViewControllerAnimated(true) 
+0

문제는 내가 다른 navigationControllers와 함께 일하고 일부는 내가 마지막으로 열어 본 뷰를 찾을 필요가 있기 때문입니다. – schmru

+0

'self.navigationController? .pushViewController (vc, animated : true)'를 사용하면 뒤로 옵션이 나타납니다. – vaibhav

+0

위의 코드를 적용하면 탐색 방법을 이해할 수 있습니다. – vaibhav