2017-07-15 8 views
0

埋め込みコードをプログラムで設定または変更しようとしていますコントローラを表示コントローラビューの中に表示します。xcode/swift3 - 私はプログラムでコンテナビュー内にビューコントローラを埋め込み/変更することはできますか?

私は、ユーザーがログインしているかどうかに応じて、コンテナビューに表示する3つの異なるView Controllerを持っています。

私は周りを見回して、コードの束を試しました、私は働いていたが、コードは、ビューコンテナビューではなく、セルフビューを変更しました。私はSWIFT 3.

に変換しようとしたとして、新しいアプリの開発者として、これは、かなりのストレスとなっているので、

私が試してみましたコードの多くはまた、誰でも提供できます、スウィフト3にされていませんビューコンテナ内の埋め込みビューコントローラを変更するためのソリューション?ありがとう。

答えて

0

最も簡単な方法は、ストーリーボードに3つのコンテナビューを重ねて表示させ、それぞれが別のビューコントローラに接続されていることです。コードでは、これらの3つのコンテナビューのうちの2つを非表示にし、ビジネスニーズに基づいて表示されます。

これは、this blog postで詳細に説明されています。お役に立てれば!

2

私はこれに対する解決策を見つけたかもしれません。私の状況で他の誰かを助けることができるなら、私はここに答えています。私が何をしたか

は新しいビューコントローラを追加し、次にビューコンテナにそれを埋め込む - これは、「マスタービュー」として動作します - 私は、どの他のビューコントローラを決定するために、この空白のビューコントローラを使用する必要があります空白の中で変更することができます。

ブランクビューコントローラーにはいくつかのコードがありますが、ブランクビューコントローラーをマスタービューコントローラー(私の場合は「アカウント」)として使用し、ログイン/レジスターを追加することもできます子供として見る。この男に

override func viewDidLoad() { 
    super.viewDidLoad() 

    updateView() 
} 

private lazy var loginViewController: loginViewController = { 
    // Load Storyboard 
    let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main) 

    // Instantiate View Controller 
    var viewController = storyboard.instantiateViewController(withIdentifier: "loginViewController") as! loginViewController 

    // Add View Controller as Child View Controller 
    self.add(asChildViewController: viewController) 

    return viewController 
}() 

private lazy var registerViewController: registerViewController = { 
    // Load Storyboard 
    let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main) 

    // Instantiate View Controller 
    var viewController = storyboard.instantiateViewController(withIdentifier: "registerViewController") as! registerViewController 

    // Add View Controller as Child View Controller 
    self.add(asChildViewController: viewController) 

    return viewController 
}() 

private func add(asChildViewController viewController: UIViewController) { 
    // Add Child View Controller 
    addChildViewController(viewController) 

    // Add Child View as Subview 
    view.addSubview(viewController.view) 

    // Configure Child View 
    viewController.view.frame = view.bounds 
    viewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight] 

    // Notify Child View Controller 
    viewController.didMove(toParentViewController: self) 
} 

private func remove(asChildViewController viewController: UIViewController) { 
    // Notify Child View Controller 
    viewController.willMove(toParentViewController: nil) 

    // Remove Child View From Superview 
    viewController.view.removeFromSuperview() 

    // Notify Child View Controller 
    viewController.removeFromParentViewController() 
} 

private func updateView() { 

    add(asChildViewController: registerViewController) 

    /* 
    if segmentedControl.selectedSegmentIndex == 0 { 
    remove(asChildViewController: sessionsViewController) 
    add(asChildViewController: summaryViewController) 
    } else { 
    remove(asChildViewController: summaryViewController) 
    add(asChildViewController: sessionsViewController) 
    } 
    */ 
} 

クレジット:https://cocoacasts.com/managing-view-controllers-with-container-view-controllers/

関連する問題