2014-10-12 4 views
0

나는 매우 쉽게 느낀 것을하려고하지만, 나는 그것을 얻을 수없는 것 같습니다. 두 개의 View Controller가 있습니다. iPhone의 회전에 따라 컨트롤러 중 하나를 표시하려고합니다. 앱이 appDelegate에 코드를 삽입하여 전화가 회전하는지 확인할 수 있었지만 회전을 기반으로 View Controller를로드 할 수 없습니다. 아무도 이것으로 나를 도울 수 있습니까? 도움에 미리 감사드립니다.Swift에서 회전을 기반으로 ViewController로드

답변

0

AppDelegate에서 수행 한 작업이나 탐색, 탭 막대 또는 기타 흐름 구조까지 앱이 구성되는 방식을 알지 못하면 실제로 Apple Developer Library에있는 방법을 제공하고 몇 가지 방법은 사용자의 요구에 맞게 :

override func viewDidLoad() { 

    // Request to turn on accelerometer and begin receiving accelerometer events 
    UIDevice.currentDevice().beginGeneratingDeviceOrientationNotifications() 

    // Add an observer to this class that will trigger a method when it receives an "orientation did change" notification 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "orientationChanged:", name: UIDeviceOrientationDidChangeNotification, object: nil) 
} 

우리는 (지금까지 당신이 기대 컨트롤러가 자연스럽게 먼저 표시하는보기)이 클래스는 방향 통지를 생성하는 시작하는 장치를 물어 첫 번째 요청. 다음으로, 우리는이 클래스에 옵저버를 추가하여 이러한 알림을 받아들이고 다음 알림을받을 때 알림을 표시합니다.

override func orientationChanged(notification: NSNotification) { 

    // create appropriate view controller for new orientation 
    let newViewController = customViewControllerClass() // or maybe a storyboard view controller Identifier 

    // present new view controller 
    self.presentViewController(newViewController, animated: true) {() -> Void in 
     // maybe some code here to handle this view while we can still access it easily 
     // we also don't have to have this presentation be animated 
    } 

여기서 우리는 관찰자가 알림을 수신 할 때 실행되는 방법을 만들었습니다. 여기에서 우리는 원하는 새로운 View Controller를 생성 한 다음 간단히 표시합니다.

두 번째보기 컨트롤러에서 구현할 수도 있지만 대신보기를 관리 할 수있는 탐색 컨트롤러와 같은 일종의 컨트롤 구조를 생각하는 것이 좋습니다. 하나를 사용하면보기 컨트롤러 인스턴스를 탐색 스택에 쉽게 밀어 넣거나 팝 할 수 있습니다. 위의 방법은 쉽고 효과적이지만 기술적으로, 가능하면 끝없이 뷰를 생성하여 서로 위에 표시하는 반면 탐색 기반 구현에서는 실제로 두 개의 뷰를 밀어서 nav 스택에서 튀어 나오게하여 저장합니다 시스템 자원.

또한 컨트롤 구조를 사용하여 뷰를 조건부로로드하면 시스템에 현재 방향을 쿼리하고 개별 뷰에서 모두 수행하지 않고 계속 수행 할 수 있습니다. 위의 Apple Developer Library 링크에 설명 된 마지막 방법을 구현하는 것을 잊지 마십시오. 그러면 Observer가 제거되고 장치 방향 알림 생성이 중지됩니다.

관련 문제