функция установки не может изменить backgroundColor в viewController - PullRequest
0 голосов
/ 30 января 2019

Я на самом деле использую это для переключения с 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 ]

0 голосов
/ 30 января 2019

Как упоминал Адриан, вам нужно подождать, пока представление загрузится, прежде чем вносить в него изменения.Вы пытались переопределить viewDidLoad() в вашем контроллере представления?

override func viewDidLoad() {
    super.viewDidLoad()

    // Do stuff here
    self.header.backgroundColor = UIColor.brown
    // ...additional view configuration
}

Если вы не можете сделать это в viewDidLoad(), вы также можете попробовать внести изменения в пользовательский интерфейс в методе viewWillAppear() вместоожидание до viewDidAppear().

0 голосов
/ 31 января 2019

Я обнаружил проблему, но понятия не имею о коренной причине.Кажется, это может быть ошибка Apple.Проблема возникает из-за того, что в раскадровке вы устанавливаете цвет фона заголовка, используя цвет из каталога Assets.xcassets (LightSideMenu).Если вместо выбора цвета из Assets.xcassets вы вручную установите цвет фона заголовка с помощью ползунков RGB или введете шестнадцатеричное значение #2A6D9E, тогда цвет фона вашего заголовка будет , а не .переопределены.Кроме того, убедитесь, что вы не сбрасываете его в другом месте, как в viewWillAppear или viewDidAppear, так как они будут вызваны после вашего func setup(selectedDay : String) метода.

enter image description here

0 голосов
/ 30 января 2019

Вы пытаетесь настроить представление перед его загрузкой, сохраните информацию, которую нужно установить в переменной, и установите в setup, а когда вызывается viewDidLoad, установите информацию из этих переменных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...