viewDidUnload
вызывается, когда само viewController
освобождает свой вид.Он не вызывается, если вы отменили просмотр (что означает, что viewDidUnload
имеет отношение только к ситуации с предупреждением памяти).Чтобы полностью удалить представление и его контроллер представления, вы должны удалить представление из его суперпредставления, а затем освободить контроллер представления.Тогда нормально viewDidUnload
не называется.
Трудно понять, как вы это реализовали и почему это пошло не так.Но позвольте мне предложить несколько вещей.
Методы контроллера представления, такие как viewWillAppear
, viewDidAppear
, viewWillDisappear
, viewDidDisappear
и т. Д., Здесь бесполезны, потому что никто из них не может сказать вамвид в данный момент на экране или нет.Единственный способ, которым вы можете сказать, - это получать contentOffset
представления прокрутки каждый раз, когда происходит прокрутка (методами делегата UIScrollViewDelegate), и проверять себя, находятся ли эти представления в видимой области или нет.Следовательно, там не обязательно использовать UIViewController.Просто используйте представления, например UIImageView.Динамически создайте экземпляр представления, когда он видим, или, что более желательно, когда около видимой области.