Как я могу добавить свой контроллер представления как дочерний элемент в мое представление контейнера? - PullRequest
0 голосов
/ 23 октября 2019

Когда пользователь выбирает структуру в tableView , он проверяет, есть ли еще структуры "снизу", и добавляет представление как дочернее представление в представление контейнера моего MainViewController .


// there is some more code but it is just for some styling and the search bar and setting up everything

if structured is Structure {
                let structure = structured as! Structure
                let storyBoard = UIStoryboard(name:"Main", bundle:nil)
                let plansViewCtrl = storyBoard.instantiateViewController(withIdentifier: "PlansViewController2") as! PlansViewController2
                self.treeSource?.select(structure)
                plansViewCtrl.treeSource = self.treeSource
                plansViewCtrl.navigationItem.title = structure.name
                if let mainVC = self.parent as? ProjectOverViewTabController2 {
                    mainVC.addChildView(viewController: plansViewCtrl, in: mainVC.scrollView)
}

Вышеприведенная часть работает должным образом. Я также реализовал всплывающее окно, где все структуры отображаются в popupView , когда пользователь нажимает кнопку в MainViewController . Здесь - это мой popupViewController . Это немного долго, поэтому я не мог бы включить его сюда.

  @IBAction func didTapCategory(_ sender: UIBarButtonItem) {
//        let popupContent = StructureNavigationListViewController.create()
//        let cardpopUp = SBCardPopupViewController(contentViewController: popupContent)
//
//        cardpopUp.show(onViewController: self)

        let sb = UIStoryboard(name: "Main", bundle: nil)
        let ctrl = sb.instantiateViewController(withIdentifier: "StructureNavigationListViewController") as! StructureNavigationListViewController

        let popupVc = PopupViewController(contentController: ctrl, position: .top(60), popupWidth: view.viewWidth/2, popupHeight: view.viewHeight)

        present(popupVc, animated: true)

    }

И код для списка структуры в * StructureNavigationListViewController *:

//Here is more code but it is not necessary in this case

tableView.rx.modelSelected(Structure.self).subscribe(onNext: { structure in
            let storyBoard = UIStoryboard(name:"Main", bundle:nil)
            let plansViewCtrl = storyBoard.instantiateViewController(withIdentifier: "PlansViewController2") as! PlansViewController2
            self.treeSource?.select(structure)
            plansViewCtrl.treeSource = self.treeSource
            plansViewCtrl.navigationItem.title = structure.name
            self.show(plansViewCtrl, sender: self)
            if let mainVC = self.parent as? ProjectOverViewTabController2 {
                mainVC.addChildView(viewController: plansViewCtrl, in: mainVC.scrollView)
            }
        }).disposed(by: disposeBag)

Проблема теперь состоит в том, что каждый раз, когда вы выбираете структуру во всплывающем окне, она отображает planViewController2 (показано в коде внизу) на полном экране изадний элемент исчезает. * StructureNavigationListViewController * не встроен в контроллер навигации. Есть ли способ добавить контроллер вида в контейнерное представление моего MainViewController -> "mainVC.scrollView", когда пользователь выбирает структуру в моем всплывающем представлении? Я знаю, что это много информации, но я не знаю, с чего начать. Заранее спасибо!

...