23

ストーリーボード コンテナー ビューを使用しています。だから私はコンテナビューを含むView Controllerを持っています。ストーリーボードには、埋め込みセグエを介してそのコンテナーに埋め込まれている 2 番目の小さなビューがあります。ここまでは順調ですね。

ユーザーがボタンをタップしたときに、コンテナ ビューのコンテンツを動的に切り替えられるようにしたいと考えています。ボタンはメインの大きなビューに表示されます。同じ小さいサイズの別のビュー コントローラーを作成し、別のストーリーボード ID を指定しました。

ただし、スイッチのコーディング方法がわかりません。そのコンテナには単一の埋め込みセグエしか作成できません。

感謝して受け取った助け。

4

3 に答える 3

4

Swift構文に変換されたrdelmarの回答

    override func viewDidLoad() {
        super.viewDidLoad()

        self.initialVC = self.childViewControllers.last
        self.substituteVC = self.storyboard!.instantiateViewControllerWithIdentifier("Substitute")
        self.currentVC = self.initialVC;

}
    @IBAction func switchControllers(sender: UISegmentedControl) {
        switch sender.selectedSegmentIndex{
            case 0:
                if (self.currentVC == self.substituteVC) {
                    self.addChildViewController(self.initialVC)
                    //self.initialVC.view.frame = self.containerView.bounds
                    moveToNewController(self.initialVC)
                }
            case 1:
                if (self.currentVC == self.initialVC) {
                    self.addChildViewController(self.substituteVC)
                    //self.substituteVC.view.frame = self.containerView.bounds
                    moveToNewController(self.substituteVC)
                }
            default:
            break;
        }
    }

    func moveToNewController(newController : UIViewController){
        self.currentVC.willMoveToParentViewController(nil)
        self.transitionFromViewController(
            self.currentVC!,
            toViewController: newController,
            duration: 0.2,
            options: UIViewAnimationOptions.TransitionCrossDissolve,
            animations: nil,
            completion: { finished in
                self.currentVC.removeFromParentViewController()
                newController.didMoveToParentViewController(self)
                self.currentVC = newController
        })

    }
于 2015-09-16T02:30:00.167 に答える