Это не будет работать во viewDidLoad, так как, по сути, view еще не присобачено к окну. Можно попробовать перенести во viewDidAppear. Но код, конечно, не айс, 2 if else вместо guard, не говоря уже о том, что такое пишут в отдельных функциях, a тут, только вызывают. А есть еще страшное слово паттерны :)