2017-01-26 3 views
0

У меня есть 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) 


} 

ответ

0

Что бы инициировать эти Просмотреть контроллер к циклу через их жизненный цикл?

Контроллер родительского вида, независимо от его имени, будет работать через цикл загрузки. Все взгляды также будут проходить через их. (Бьюсь об заклад, если вы подклассифицируете представление и, используя его, поместите контрольную точку внутри ничьей (rect :), это ударит по ней.) Но нет ничего, что могло бы заставить контроллеры дочерних представлений делать свою работу.

Из того, что я вижу, ваше мнение иерархия:

  • Общий вид
  • вид прокрутки в главном окне
  • Три вида страницы внутри вид прокрутки

Когда основной вид (вышеупомянутый контроллер родительского представления) загружается, он проходит через обычные viewDidLoad, viewWillAppear, viewWillLoadSubviews .... и это там, что все вышеперечисленные представления загружаются, выкладываются и нарисованы.

Ничего не происходит, чтобы запускать эти три диспетчера страниц для любой загрузки.

+0

Спасибо за подробный ответ, и вы правы со своими точками. Поэтому, исходя из моего понимания, когда я перехожу к 3 контроллерам представлений, которые находятся внутри прокрутки, viewDidAppear и т. Д. Не будут запускаться снова, поскольку они были загружены? Даже если я перейду к другому? (действительно новый для этого!) Также я подумал: «Что заставило бы эти контроллеры представлений циклически перебирать жизненные циклы?» было бы, когда я прокрутил бы по этому определенному виду, это заставит его выполнить. Но я не думаю? – user7097242

+0

Я пробовал просить об этом раньше в предыдущем вопросе - в чем причина этих 3 VC? Не путайте UIViews с UIViewControllers. (Это обычная ошибка для новичков, и я говорю это по отношению к вам.) Принцип работы «родительский VC» контролирует вид прокрутки ** и ** все представления внутри него. В старой версии моего приложения у меня был UIPageView и UIScrollView, которые работали с двумя GLKViews (похожими на UIViews) внутри него. Все это - загрузка изображений, окно прокрутки, изменение элемента управления страницы - работало с одним UIViewController. Я добавлю к этому .... – dfd

+0

Я выгрузил обработку изображений в функции в Framework, потому что хотел разделить этот код. Я выгрузил автомат в другой файл. Я переместил обработку представлений прокрутки и делегатов просмотра страниц в расширение UIViewController. В противном случае у вас будет массивный контроллер просмотра. Я также сделал несколько других расширений. Но главное в этих двух комментариях - я думаю, если у вас нет конкретной потребности ** (и может быть такой), чтобы ваши представления в вашем представлении прокрутки имели свой собственный контроллер, вы направляетесь по пути с непреднамеренные побочные эффекты. – dfd

Смежные вопросы