2015-07-24 7 views
1

Я хочу изменить объект ребенка UIViewController, но он не работает. Может ли кто-нибудь решить мою проблему? спасибо ~~Как изменить объект дочернего контроллера просмотра с родительского контроллера представления из в swift

ниже мой код

Мой 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!) 

    } 

} 
+0

Вы пытаетесь сделать изменения второй 'UIViewController', а затем непосредственно перейти к нему? Если это так, вы можете переопределить метод 'prepareForSegue' внутри вашего класса' ViewController'. Кроме того, возможно, это было просто для демонстрационных целей, но я рекомендую классы с более интуитивными именами. ;) –

ответ

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) 
    } 
} 
0

После инициализации второй контроллер представления, вызовите addChildViewController(instanceOfSecondVC) И после того, как добавив его как subview, позвоните 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) 

    } 

} 
Смежные вопросы

 Смежные вопросы