Как я могу добавить второй View Controller в мой ContainerView? - PullRequest
0 голосов
/ 31 мая 2019

Я хочу добавить свой planViewController2 в ContainerView моего OverviewController . Я на самом деле не знаю, как добавить подпредставление к моему ContainerView, чтобы я мог перемещаться вперед и назад. Я надеюсь, что кто-то может мне помочь!

 _ = collectionView.rx.modelSelected(String.self).subscribe(onNext: { pnc in
        let storyBoard = UIStoryboard(name:"Main", bundle:nil)
        let action = self.actions.first(where: { $0.label == pnc })
        let newController = storyBoard.instantiateViewController(withIdentifier: action!.control)
        newController.navigationItem.title = pnc
        self.containerView.addSubview(newController.view)

    })

Как вы можете видеть здесь , второй ViewController выдвигает новый контроллер, но я хочу, чтобы он отображался в представлении контейнера, как показано на рисунке выше. Я сталкиваюсь с некоторыми трудностями с кодом, показанным в блоке кода. Я не знаю, как идти дальше. Я реализовал свои взгляды в своих «действиях» - массиве, но оттуда не могу идти дальше.

1 Ответ

1 голос
/ 31 мая 2019

StoryBoard

ContainerViewController.swift

import UIKit

class ContainerViewController: UIViewController {

    @IBOutlet weak var containerView: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

    @IBAction func btnOne(_ sender: Any) {
        containerView.subviews.forEach { $0.removeFromSuperview() } // removes the old if have
        let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
        let nextViewController = storyBoard.instantiateViewController(withIdentifier: "NavigationOneViewControllerID") as! NavigationOneViewController
        addChildView(viewController: nextViewController, in: containerView)
    }

    @IBAction func btnTwo(_ sender: Any) {
        containerView.subviews.forEach { $0.removeFromSuperview() } // removes the old if have
    }

    @IBAction func btnThree(_ sender: Any) {
        containerView.subviews.forEach { $0.removeFromSuperview() } // removes the old if have
    }

    private func addChildView(viewController: UIViewController, in DisView: UIView) {
        viewController.view.autoresizingMask = [.flexibleHeight, .flexibleWidth]
        viewController.view.frame = DisView.bounds
        addChild(viewController)
        DisView.addSubview(viewController.view)
        viewController.didMove(toParent: self)
    }

}

NavigationOneViewController.swift

import UIKit

class NavigationOneViewController: UINavigationController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

}

ContainerSubOneViewController.swift

import UIKit

class ContainerSubOneViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

    @IBAction func nxtClk(_ sender: Any) {
        let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
        let nextViewController = storyBoard.instantiateViewController(withIdentifier: "ContainerSubTwoViewControllerID") as! ContainerSubTwoViewController
        self.navigationController?.pushViewController(nextViewController, animated: true)
    }
}

ContainerSubTwoViewController.swift

import UIKit
class ContainerSubTwoViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

}

Установите для верхней панели navigationOneViewController значение «Нет» в раскадровке.

...