如何从 swift 中的父 viewcontroller 修改子 viewcontroller 的对象
How to modified object of child viewcontroller from parent viewcontroller from in swift
我想修改子 UIViewController
的对象,但它不起作用。谁能解决我的问题?非常感谢~~
下面是我的代码
我的ViewController
class:
import UIKit
class ViewController: UIViewController {
var x:UIView?
override func viewDidLoad() {
super.viewDidLoad()
var sec = second()
sec.x?.backgroundColor = UIColor.redColor()
view.addSubview(sec.view)
self.addChildViewController(sec)
}
}
我的second
class:
class second:UIViewController{
var x:UIView!
override func viewDidLoad() {
super.viewDidLoad()
x = UIView(frame: CGRectMake(55, 55, 100, 100))
x!.backgroundColor = UIColor.greenColor()
self.view.addSubview(x!)
}
}
初始化第二个视图控制器后,调用addChildViewController(instanceOfSecondVC)
并将其添加为子视图后,调用 sec.didMoveToParentViewController(self)
。
所以你的代码将是这样的:
import UIKit
class ViewController: UIViewController {
var x:UIView?
override func viewDidLoad() {
super.viewDidLoad()
var sec = second()
addChildViewController(sec)
sec.x?.backgroundColor = UIColor.redColor()
view.addSubview(sec.view)
self.addChildViewController(sec)
sec.didMoveToParentViewController(self)
}
}
发生这种情况是因为当您尝试设置其背景颜色时视图可能为零。只需在第二个视图控制器中添加背景颜色 属性 并进行设置。然后在 viewDidLoad 里面设置第二个视图控制器的背景颜色。
像这样
class ViewController: UIViewController {
var x:UIView?
override func viewDidLoad() {
super.viewDidLoad()
var sec = second()
sec.backColor = UIColor.redColor()
view.addSubview(sec.view)
self.addChildViewController(sec)
}
}
然后:
class second:UIViewController {
var backColor = UIColor.greenColor()
var x:UIView!
override func viewDidLoad() {
super.viewDidLoad()
x = UIView(frame: CGRectMake(55, 55, 100, 100))
x.backgroundColor = backColor
self.view.addSubview(x)
}
}
我想修改子 UIViewController
的对象,但它不起作用。谁能解决我的问题?非常感谢~~
下面是我的代码
我的ViewController
class:
import UIKit
class ViewController: UIViewController {
var x:UIView?
override func viewDidLoad() {
super.viewDidLoad()
var sec = second()
sec.x?.backgroundColor = UIColor.redColor()
view.addSubview(sec.view)
self.addChildViewController(sec)
}
}
我的second
class:
class second:UIViewController{
var x:UIView!
override func viewDidLoad() {
super.viewDidLoad()
x = UIView(frame: CGRectMake(55, 55, 100, 100))
x!.backgroundColor = UIColor.greenColor()
self.view.addSubview(x!)
}
}
初始化第二个视图控制器后,调用addChildViewController(instanceOfSecondVC)
并将其添加为子视图后,调用 sec.didMoveToParentViewController(self)
。
所以你的代码将是这样的:
import UIKit
class ViewController: UIViewController {
var x:UIView?
override func viewDidLoad() {
super.viewDidLoad()
var sec = second()
addChildViewController(sec)
sec.x?.backgroundColor = UIColor.redColor()
view.addSubview(sec.view)
self.addChildViewController(sec)
sec.didMoveToParentViewController(self)
}
}
发生这种情况是因为当您尝试设置其背景颜色时视图可能为零。只需在第二个视图控制器中添加背景颜色 属性 并进行设置。然后在 viewDidLoad 里面设置第二个视图控制器的背景颜色。 像这样
class ViewController: UIViewController {
var x:UIView?
override func viewDidLoad() {
super.viewDidLoad()
var sec = second()
sec.backColor = UIColor.redColor()
view.addSubview(sec.view)
self.addChildViewController(sec)
}
}
然后:
class second:UIViewController {
var backColor = UIColor.greenColor()
var x:UIView!
override func viewDidLoad() {
super.viewDidLoad()
x = UIView(frame: CGRectMake(55, 55, 100, 100))
x.backgroundColor = backColor
self.view.addSubview(x)
}
}