Функция установки не может изменить backgroundColor в viewController
Я на самом деле использую это для переключения с 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
, Я не понимаю почему. Прошла неделя с тех пор, как я был на этой ошибке, это сводит меня с ума...
3 ответа
Я обнаружил проблему, но понятия не имею о коренной причине. Кажется, это может быть Apple
ошибка. Проблема возникает, потому что в раскадровке вы устанавливаете цвет фона заголовка, используя цвет из Assets.xcassets
каталог (LightSideMenu
). Если вместо выбора цвета из Assets.xcassets
Вы вручную устанавливаете цвет фона заголовка, используя RGB
ползунки или введя шестнадцатеричное значение #2A6D9E
, тогда цвет фона вашего заголовка не будет переопределен. Кроме того, убедитесь, что вы не сбрасываете его в другом месте, как в viewWillAppear
или же viewDidAppear
как они будут называться после вашего func setup(selectedDay : String)
метод.
Вы пытаетесь настроить представление до его загрузки, сохраните информацию, которую необходимо установить, в переменной и установите в setup
, и когда viewDidLoad
вызывается, установить информацию из этих переменных.
Как упоминал Адриан, вам нужно подождать, пока представление загрузится, прежде чем вносить в него изменения. Вы пытались переопределить viewDidLoad()
по вашему мнению контроллер?
override func viewDidLoad() {
super.viewDidLoad()
// Do stuff here
self.header.backgroundColor = UIColor.brown
// ...additional view configuration
}
Если вы не можете сделать это в viewDidLoad()
Вы также можете попробовать внести изменения в пользовательский интерфейс в viewWillAppear()
метод, а не ждать, пока viewDidAppear()
,