我实际上是用它来从ViewController切换到另一个
let vue = MAINSTORYBOARD.instantiateViewController(withIdentifier: "addhoraire") as! Addhoraire
self.present(vue, animated: true, completion: nil)
有时我想在向用户显示视图之前进行一些更改,因此在VC中,我会执行func
。这样
// header and cercle.exemple are outlets of a UIView
public func setup(selectedDay : String){
loadViewIfNeeded()
self.selectedDay = selectedDay
print("jour selectionné : " + self.selectedDay)
self.header.backgroundColor = UIColor.brown
self.profTextField.backgroundColor = UIColor.yellow
self.cercleExemple.backgroundColor = UIColor.yellow
}
当我现在要切换时,我要做:
let vue = MAINSTORYBOARD.instantiateViewController(withIdentifier: "addhoraire") as! Addhoraire
vue.setup(selectedDay: selectedDayinHoraire)
self.present(vue, animated: true, completion: nil)
因此它将切换新的VC并执行我想要的设置,文本字段的颜色也将更改,cercleExemple也将更改,但标头将不会更改。 view.backgroundColor
,同样的问题……但是,如果我在同一位置执行header.isHidden = true,则可以正常工作。所以它只是拒绝改变颜色
标题和视图bgcolor仅在ViewDidAppear
中发生变化。我不明白为什么。自从我发现这个错误以来已经过去了一个星期,这让我发疯了...
答案 0 :(得分:0)
您试图在视图加载之前进行设置,将需要设置的信息保存在变量中并在setup
中进行设置,并在调用viewDidLoad
时,从这些变量中设置信息
答案 1 :(得分:0)
正如Adrian所述,您需要等到视图加载后才能对其进行更改。您是否尝试过在视图控制器中覆盖viewDidLoad()
?
override func viewDidLoad() {
super.viewDidLoad()
// Do stuff here
self.header.backgroundColor = UIColor.brown
// ...additional view configuration
}
如果您无法在viewDidLoad()
中进行此操作,也可以尝试使用viewWillAppear()
方法进行UI更改,而不必等到viewDidAppear()
。
答案 2 :(得分:0)