2017-04-06 10 views
1

내 앱은 두 가지보기로 구성됩니다. 첫 번째는 GMSMapView이고 두 번째는 좌표를 보내는 Bluetooth 장치에 연결하는 데 사용됩니다.Swift IOS는 팝업 후 배경에서 컨트롤러를 계속 실행합니다.

블루투스 장치가 연결되면 대리인을 사용하여 정보를지도보기로 다시 보내고 마커를 움직입니다. 이전에 segues를 사용했던 뷰간에 전환하려면 블루투스 뷰 컨트롤러가 중단되지 않고 데이터가지도보기를 원했던 것처럼 변경되었습니다.

지도보기가 다시 시작되어 탐색 컨트롤러를 사용하기로 결정했기 때문에 문제가 발생했습니다. 이제는 두 번째보기로 이동하기 위해 푸시 세그 (push segue)를 사용하고 첫 번째보기의 동일한 인스턴스로 돌아 오기 위해 팝합니다. 좋아, 잘됐다! 지금 가지고있는 문제는 두 번째보기가 터지는 것이 이전처럼 완전히 백그라운드에서 실행되는 것을 막는 것입니다. 이전과 같이 백그라운드에서 계속 실행하는 방법이 있습니까? 나는 현재 두 번째보기를 팝업으로 사용하고 무엇

self.navigationController?.popViewControllerAnimated(true) 

어떤 생각을 이해할 수있을 것입니다! 감사!

+0

보기 컨트롤러를 삭제하지 않고 동일한 전환을 수행 할 수있는 방법이 있습니까? 의미, 첫 번째보기에서 두 번째보기로 전환 한 다음 다시 첫 번째보기의 인스턴스를 유지하면서 다시 전환하는 방법이 있습니까? – lhbortho

+0

네, 그리고 그것이 무엇인지 알려주는 답변을주었습니다. 그러나 이것은 또한 나쁜 생각이며 앱 아키텍처가 잘못되었다는 것을 나타냅니다. – matt

+0

또한 Swift 2.x를 사용하고있는 것 같습니다. 그 버전의 Swift는 이제 공식적으로 죽었습니다. 업데이트해야합니다. – matt

답변

1

팝업 된보기 컨트롤러는 "실행을 중지하지 않습니다". 그것은 당신에게 돌려 보내지고, 그것을 지키지 않으면, 은 완전히 파괴됩니다.

발생하지 않으려면 반환 될 때까지 그대로 두십시오. 현재 반환 뷰 컨트롤러를 무시됩니다

대신
self.navigationController?.popViewControllerAnimated(true) 

, 그것은에 대한 참조를 유지 :

self.mySecondViewController = 
    self.navigationController?.popViewControllerAnimated(true) 

이 매우 특이한 구조입니다, 그러나,주의 할. 스토리 보드 단락을 사용하여 다시 밀어 올릴 수 없습니다. 다른 복사본을 밀어 넣기 때문입니다. 보기 컨트롤러가 터진 후에도 계속 유지된다는 생각에 완전히 부합하지 않으므로 네비게이션 컨트롤러 아키텍처를 완전히 버리는 것이 좋습니다. 두 개의 뷰 컨트롤러가 동시에 유지되는 아키텍처를 원한다면 UITabBarController를 사용하는 것이 더 좋을 것입니다. 또는 더 나은 방법으로 앱을 다시 구성하십시오 . 뷰 컨트롤러가 팝업 된 후에도 계속 유지되어야한다는 개념은 "나쁜 냄새"입니다. 즉, 잘못된 위치에 기능을 넣었 음을 의미합니다. 보기 컨트롤러가 어떤 인공적인 방법으로 지속되도록하기보다는 이 수행하는 장소에 기능을 넣으십시오.이 지속됩니다.

+0

답변을 주셔서 감사합니다. 매트, 나는 완전히 iOS에 익숙해졌으며, 정확히 내가 찾고 있던 답변과 같습니다. 나는 두 가지 견해를 일관되게 유지할 수있는 또 다른 방법을 찾으려고 노력할 것입니다. 아마도 내 블루투스 기능을 메인보기 컨트롤러로 되돌릴 수 있으므로 두 번째보기 컨트롤러를 동시에 실행할 필요가 없습니다. – lhbortho

+0

"내 Bluetooth 기능을 기본보기 컨트롤러로 다시 옮길 수 있으므로 두 번째보기 컨트롤러를 동시에 실행할 필요가 없습니다."좋습니다! 그건 내가 너에게 해보라고 격려하는 그런 종류의 일이다. – matt

+0

이전에는 성공했지만 성공하지 못했습니다. UITabBarController를 사용하면 작업하기가 쉽지만 올바른 방법으로 사용하지 않을 수 있습니다. UITabBarController로 이동하기 전에 조금 더 노력할 것입니다. 감사! – lhbortho