2017-03-23 2 views
0

방금 ​​Xcode를 8.2.1로 업데이트하고 신속한 코드를 2.2에서 3.0으로 마이그레이션했습니다.Swift - 가장 이상적인 UIView 인스턴트 오버뷰 ViewController

그 후 최상위보기 컨트롤러가보기 (for more detail, please click to see the screenshot of Xcode debug hierarchy view)로 덮여있는 상황에 부딪혔습니다.이보기는 신속한 2.2를 사용했을 때 결코 나타나지 않았습니다. 최상위 VC는 https://cocoapods.org/pods/DrawerController의 DrawerController이며 마지막 버전으로 업데이트됩니다.

모든 터치 이벤트가 이상한보기로 수신 되었기 때문에 내 앱이 정상적으로 작동하지 않을 수 있습니다.

보기를 만들 가능성이 있습니까? 보기가 어디서 왔는지 알아낼 방법이 있습니까?

자세한 정보가 필요하면 알려 주시기 바랍니다. 미리 감사드립니다.

+0

당신은 Tj3n @ lib 디렉토리 – Tj3n

+0

에서, 어쩌면 그 버그를 그 평면도를 제거하려면 view.subViews을 통해 루프를 시도하지만 계층에 따라 수 screenshot, Top view는 DrawerController의 레벨보다 아래가 아닌 DrawerController의 레벨보다 위의 레벨에 있습니다. Top view의 superview를 얻는 방법에 대해서는 잘 모른다. –

답변

0

평판이 부족하기 때문에 나는 말할 수 없다.

"이상한 전망"을 삭제하려고 시도한 적이 있습니까? 아니면 그냥 서랍이 들어있는 UIView 상단에 이동?

+0

이상한보기의 참조를 얻는 방법? 나는 그것을 삭제하는 참조가 필요하거나 추측 할 수있는 방법이 있다면 그것을 알려주세요. –

+0

스토리 보드에서 직접 삭제할 수 없습니까? – Lysdexia

+0

Strange View가 스토리 보드에서 추가되지 않았습니다. 내 게시물의 스크린 샷은 디버그 계층 창의 왼쪽에서 가져 왔지만 스토리 보드 창에서는 가져 오지 않았습니다. –

0

이 문제가 해결되었습니다.

내 원래 코드에서 DrawerController (예 : MyDrawerController)를 서브 클래 싱하고 MyDrawerController의 재정의 된 viewDidLoad()에서 centerViewController (DrawerController의 사용자에게 표시되는 기본 페이지) 속성을 할당했습니다. 결과적으로 위의 질문에서 설명한대로 문제가 발생했습니다.

문제를 해결하기 위해 수행 할 작업은 메인 큐를 만들고 속성 centerViewController를 메인 큐의 블록에 할당하는 코드를 이동하는 것입니다. ("BEFORE"와 "AFTER"의 코드는 다음과 같습니다.)

그런 다음 문제가 해결되었습니다.

Swift 2.2에서는 "BEFORE"코드가 정상적으로 작동했지만 Swift 3.3에서는 실패한 이유를 모릅니다. 아무도 그 차이를 말할 수 있습니까?

도움 주셔서 감사합니다.

전 :

class MyDrawerController: DrawerController { 

    override func viewDidLoad() { 
     self.centerViewController = aViewControllerInstant 
    } 

} 

AFTER :

class MyDrawerController: DrawerController { 

    override func viewDidLoad() { 

     DispatchQueue.main.async { 
      self.centerViewController = aViewControllerInstant 
     } 

    } 

} 
관련 문제