Если я понимаю, что вы объясняете, у меня была очень похожая проблема на днях.
При первой загрузке происходит то, что viewDidLoad запускается первым. загрузка файла пера занимает немного больше времени, чем требуется самому viewWillAppear для запуска.
То, что мы получаем, это загрузка пера после того, как viewWillApper уже удалился.
При любой загрузке после этого viewDidLoad не будет запускаться, позволяя viewWillAppear выполнять свою работу по верному переключению.
Что делать?
Сначала попробуйте изменить свой код, чтобы использовать «viewDidAppear». Это должно помочь, но вы должны посмотреть, хорошо ли это выглядит.
Другой вариант (я знаю, что он уродливый) - это вызов метода checkOptionsVisible для viewDidLoad.
Если бы не эта помощь, я бы посчитал таймер хаком - если требования позволяют это.
Я надеюсь, что это поможет вам решить проблему.