我想修改子ViewController
的对象,但它不起作用。谁能解决我的问题?非常感谢~~
下面是我的代码
我的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 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!)
}
}
课程:
{{1}}
答案 0 :(得分:0)
初始化第二个视图控制器后,请致电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)
}
}
答案 1 :(得分:0)
这种情况正在发生,因为当您尝试设置其背景颜色时,视图可能为零。只需在第二个视图控制器中添加背景颜色属性并进行设置即可。然后在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)
}
}