У меня есть 3 контроллера вида и контроллер контейнера. Я добавляю эти 3 диспетчера представлений в качестве контроллеров детского вида в контейнере. Когда я запускаю приложение, у меня есть инструкции print в viewDidload и viewDidAppear во всех контроллерах представления, которые выполняются.viewDidload и viewDidAppear не называется?
Проблема заключается в том, что когда я «прокручиваю» назад эти виды и снова «появляется», операторы печати не выполняются, ни код внутри viewDidAppear или viewDidLoad. Почему это происходит?
Вот мой код, где я создаю экземпляр моих контроллеров. Спасибо за помощь!
override func viewDidLoad() {
super.viewDidLoad()
scrollView.delegate = self
let storyboard = UIStoryboard(name: "Main", bundle: nil)
page1 = storyboard.instantiateViewController(withIdentifier: StoryboardIdentifiers.feedViewController.rawValue) as! FeedViewController
page1.view.translatesAutoresizingMaskIntoConstraints = false
page1.delegate = self
scrollView.addSubview(page1.view)
addChildViewController(page1)
page1.didMove(toParentViewController: self)
page2 = storyboard.instantiateViewController(withIdentifier: StoryboardIdentifiers.favoritesViewController.rawValue) as! FavoritesViewController
page2.view.translatesAutoresizingMaskIntoConstraints = false
page2.delegate = self
scrollView.addSubview(page2.view)
addChildViewController(page2)
page2.didMove(toParentViewController: self)
page3 = storyboard.instantiateViewController(withIdentifier: StoryboardIdentifiers.settingsViewController.rawValue) as! SettingsViewController
page3.view.translatesAutoresizingMaskIntoConstraints = false
scrollView.addSubview(page3.view)
addChildViewController(page3)
page3.didMove(toParentViewController: self)
}
Спасибо за подробный ответ, и вы правы со своими точками. Поэтому, исходя из моего понимания, когда я перехожу к 3 контроллерам представлений, которые находятся внутри прокрутки, viewDidAppear и т. Д. Не будут запускаться снова, поскольку они были загружены? Даже если я перейду к другому? (действительно новый для этого!) Также я подумал: «Что заставило бы эти контроллеры представлений циклически перебирать жизненные циклы?» было бы, когда я прокрутил бы по этому определенному виду, это заставит его выполнить. Но я не думаю? – user7097242
Я пробовал просить об этом раньше в предыдущем вопросе - в чем причина этих 3 VC? Не путайте UIViews с UIViewControllers. (Это обычная ошибка для новичков, и я говорю это по отношению к вам.) Принцип работы «родительский VC» контролирует вид прокрутки ** и ** все представления внутри него. В старой версии моего приложения у меня был UIPageView и UIScrollView, которые работали с двумя GLKViews (похожими на UIViews) внутри него. Все это - загрузка изображений, окно прокрутки, изменение элемента управления страницы - работало с одним UIViewController. Я добавлю к этому .... – dfd
Я выгрузил обработку изображений в функции в Framework, потому что хотел разделить этот код. Я выгрузил автомат в другой файл. Я переместил обработку представлений прокрутки и делегатов просмотра страниц в расширение UIViewController. В противном случае у вас будет массивный контроллер просмотра. Я также сделал несколько других расширений. Но главное в этих двух комментариях - я думаю, если у вас нет конкретной потребности ** (и может быть такой), чтобы ваши представления в вашем представлении прокрутки имели свой собственный контроллер, вы направляетесь по пути с непреднамеренные побочные эффекты. – dfd