ContainerViewController를 사용할 때 초기화 순서를 이해하기 어렵습니다.





StoryBoard의 이야기입니다. 초기화 순서를 알지 못하면 하위 뷰 컨트롤러의 프레임이 이상한 상태로 부모 뷰 컨트롤러에 표시됩니다. 액티비티 다이어그램에 정리해 보았습니다. 이상한 곳이 있으면 지적해 주세요.

ViewController.swift
//セグエ先のPreviewViewControllerのプロパティを取得する方法
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "preview" {
            let previewViewController = segue.destinationViewController as! PreviewViewController
            //PreviewViewControllerのプロパティをprintする
            print("MainViewController@prepareForSegue: ", previewViewController.view.frame)
        }
    }
prepareForSegue 가 실행되는 타이밍은 빠르고 viewDidLoad 이나 viewDidAppeared 보다 먼저 실행됩니다.

따라서, 이 때의 아이 뷰 컨트롤러의 frame등은, 아직 부모 뷰 컨트롤러에 addSubView 되기 전의 값 때문에, 이 frame를 사용해 뷰를 만들거나 하면 이상한 것이 됩니다.

2016/10/17



그림은 이런가?



블로그를하고 있습니다 : ht tp // 우우 d. 나고야

좋은 웹페이지 즐겨찾기