Вы редактировали код перед запуском приложения?
Мне удалось воспроизвести вашу проблему, закомментировав вызов _ = setupInitialPages
в вызове метода viewDidLayoutSubviews. Без комментариев, приложение отлично работает.
В случае ленивых загрузочных переменных нужно помнить, что они не заполняются до тех пор, пока не будут вызваны, вот и весь смысл ленивой загрузки. Если нет ссылки на лениво загруженную переменную, она не будет создана и приведет к тому, что вы увидели в своем тесте.
Синтаксис для ленивой загруженной переменной:
lazy var someVarName: the variable type e.g. Int, UIIMage, String... whatever = {
// Code in here to populate the variable
return variable with the declared type
}()
Вы должны убедиться, что возвращение вызова для отложенной переменной соответствует типу. Также имейте в виду, что ленивая переменная, хотя она и называется переменной, однажды заданная, не изменяется и больше похожа на константу в этом отношении. Есть некоторые обходные пути, но они уже были рассмотрены здесь ... Повторная инициализация отложенной инициализированной переменной в Swift