[英]Redifine a parent properties as controller into a child properties in swift
I have 2 different containerView controllers with similar characteristics. 我有2个具有类似特征的不同containerView控制器。 So I decide to create a superclass controller in the storyboard and in code to manage these containerView
所以我决定在情节提要和代码中创建一个超类控制器来管理这些containerView
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)
}
...
}
So, in the child controller, I need to redefine activateListController() with the specific ViewController 因此,在子控制器中,我需要使用特定的ViewController重新定义activateListController()
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
}}
But I have an error with ReactionViewController properties: "value of type viewcontroller has no member selectedFunction". 但是我对ReactionViewController属性有一个错误:“类型为viewcontroller的值没有成员selectedFunction”。 The parent properties is not redifined into a child properties
父属性未重新转换为子属性
I also try something like that 我也尝试这样
class ContainerViewController: ContainerController, ReactionViewDelegate {
var reactionViewController: ReactionViewController?
var mechanismViewController: MechanismViewController?
override func viewDidLoad() {
listController = reactionViewController
detailController = mechanismViewController
super.viewDidLoad()
}
and defining activateListController() with reactionViewController, but I had a nil exception on the method addListController() of the superclass 并使用reactionViewController定义activateListController(),但是在超类的方法addListController()上我没有一个异常
func addListController(){
self.addChildViewController(listController!) //nil exception
So, how can I well manage inherit with my containerview controller? 因此,如何使用我的containerview控制器很好地管理继承? Thank
谢谢
Why don't you do something like this: 你为什么不做这样的事情:
override func activateListController(){
let newListController = storyboard?.instantiateViewController(withIdentifier: "ReactionController") as! ReactionViewController?
newListController.selectedFunction = selectedFunction
newListController.selectedProduct = selectedProduct
newListController.delegate = self
listController = newListController
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.