Я добавил второй диспетчер представлений к моему главному диспетчеру просмотра. Когда мой второй диспетчер представлений хочет изменить объект главного управления представлением, его получение ошибки.swift - как изменить свойство объекта из другого класса?
первый ViewController
class ViewController: UIViewController {
var uview:UIView!
override func viewDidLoad() {
super.viewDidLoad()
uview = UIView(frame: CGRectMake(55, 175, 100, 100))
uview.backgroundColor = UIColor.greenColor()
self.view.addSubview(uview)
var sec = second()
self.addChildViewController(sec)
self.view.addSubview(sec.view)
sec.didMoveToParentViewController(self)
}
}
второй ViewController
class second: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var button:UIButton = UIButton(frame: CGRectMake(55, 55, 100, 100))
button.backgroundColor = UIColor.redColor()
button.addTarget(self, action: "press", forControlEvents:UIControlEvents.TouchUpInside)
self.view.addSubview(button)
}
func press(){
var first:ViewController = ViewController()
first.uview!.backgroundColor = UIColor.purpleColor()
}
}
Сообщение об ошибке
fatal error: unexpectedly found nil while unwrapping an Optional value
Thread 1:EXC_BAD_INSTRUCTION(code=EXC_I386_INVOP,subcode=0x0)
большое спасибо ~~~~ u сохранить мою жизнь ~~~~~ –
, если viewcontroller не имеет отношений родительский/дочерний, я все еще хочу изменить свойство объекта из другого viewcontroller, так что я хочу сделать? –
Создайте пользовательскую переменную типа ViewController в 'second'. Затем выполните 'var sec = second(); сек. <# ViewController #> = self' в вашем первом контроллере представления. – ryancrunchi