Это потому, что вы пытаетесь скрыть View, который еще не был инициализирован. Как правило, имейте в виду, что при создании экземпляра viewController вы можете получить доступ только к его данным, а не к его представлениям. У вас есть 2 способа исправить это:
- Создайте 2 переменные внутри secondViewController:
var isOneButnContainerViewHidden: Bool = false var isTwoButnContainerViewHidden: Bool = false
Присвойте значение этим двум переменным внутри firstViewController:
let viewController = self.storyboard?.instantiateViewController(withIdentifier: "NewZoomAddressViewController") as! NewZoomAddressViewController;
viewController.delegate = self
viewController.isOneButnContainerViewHidden= false
viewController.isTwoButnContainerViewHidden= true
self.navigationController?.pushViewController(viewController, animated: true);
Теперь внутри viewDidLoad или viewWillAppear вашего secondViewController скройте / покажите ваши buttonContainerViews на основе значения Создано 2 переменных:
oneButnContainerView.isHidden = isOneButnContainerViewHidden
twoButnContainerView.isHidden = isTwoButnContainerViewHidden
Второй способ включает в себя принуждение viewController к компоновке своих представлений путем вызова loadViewIfNeeded () для второгоViewController перед доступом к его представлениям (в этом случае вы пытаетесь скрыть / показать просмотры).