Программно создать собственный контроллер представления и получить подпредставления по тегу
У меня есть три контроллера представления каждый под тем же собственным классом контроллера представления, и контроллер представления страницы. Я хочу иметь возможность повторно использовать эти три контроллера представления, но с разным содержанием в своих подпредставлениях. Однако, когда я пытаюсь создать экземпляр одного из этих контроллеров представления из контроллера представления страницы, используя [self.storyboard instantiateViewControllerWithIdentifier:identifier]
, с методом, чтобы найти подпредставление по тегу сразу после, возвращенное подпредставление является нулевым. Есть ли какой-то способ, которым я могу получить подпредставление по тегу сразу после создания экземпляра контроллера представления программно?
1 ответ
Представления контроллера представления не создаются, пока он не собирается отображаться. Они не будут созданы после звонка instantiateViewControllerWithIdentifier:
Вы должны поместить код, который обращается к представлениям контроллеров представления в viewDidLoad
, viewWillAppear
, или же viewDidAppear
,
Вы не должны пытаться манипулировать представлениями контроллера представления от внешнего объекта. Это нарушает принцип инкапсуляции, важный принцип объектно-ориентированного проектирования. (Это также часто не работает, как вы узнали.)
Если вам нужно сделать что-то с представлениями программно, вы должны добавить один или несколько открытых методов к контроллеру представления и вызвать эти методы, чтобы попросить контроллер представления внести коррективы в его представления.