У меня есть два разных контроллера контейнера с аналогичными характеристиками. Поэтому я решил создать суперкласс контроллер в раскадровке и в коде, чтобы управлять этим containerViewRedifine родительские свойства как контроллер в дочерние свойства в swift
class ContainerController: UIViewController {
@IBOutlet weak var containerView: UIView!
weak var listController: UIViewController?
weak var detailController: UIViewController?
let deviceIdiom = UIScreen.main.traitCollection.userInterfaceIdiom
override func viewDidLoad() {
super.viewDidLoad()
activateListController()
addListController()
}
func activateListController(){}
func addListController(){
self.addChildViewController(listController!)
listController?.view.frame = defineChildSize()
self.containerView.addSubview((listController?.view)!)
listController?.didMove(toParentViewController: self)
}
...
}
Так, в контроллере ребенка, мне нужно переопределить activateListController() с конкретным ViewController
class ContainerViewController: ContainerController, ReactionViewDelegate {
var selectedProduct = String()
var selectedFunction = String()
override func viewDidLoad() {
super.viewDidLoad()
}
override func activateListController(){
self.listController = listController as! ReactionViewController
self.listController = self.storyboard?.instantiateViewController(withIdentifier: "ReactionController") as! ReactionViewController?
self.listController.selectedFunction = self.selectedFunction
self.listController?.selectedProduct = self.selectedProduct
self.listController?.delegate = self
}}
Но у меня есть ошибка с свойствами ReactionViewController: «значение типа viewcontroller не имеет члена selectedFunction». Родительские свойства не redifined в ребенка свойства
Я также попробовать что-то вроде этого
class ContainerViewController: ContainerController, ReactionViewDelegate {
var reactionViewController: ReactionViewController?
var mechanismViewController: MechanismViewController?
override func viewDidLoad() {
listController = reactionViewController
detailController = mechanismViewController
super.viewDidLoad()
}
и определения activateListController() с reactionViewController, но у меня было ноль исключение на методе addListController() суперкласса
func addListController(){
self.addChildViewController(listController!) //nil exception
Итак, как я могу управлять наследованием с помощью моего контроллера keeperview? Спасибо
Спасибо, что работает отлично. Я знал, что близко, но я не могу найти решение –