UINavigationController вызывает эти методы непосредственно на контроллере, который выдвигается при вызове pushViewController: animated: Аналогично, UITabBarController вызывает эти методы непосредственно при переключении вкладок, а UIViewController вызывает их при использовании presentModalViewController: animated :. Они также вызываются, когда представление контроллера представления добавляется к окну. Я никогда не видел, чтобы эти методы не вызывались в этих конкретных контекстах.
Теперь имейте в виду, что эти методы вызываются только при нажатии или представлении контроллера в этих конкретных контекстах. Эти методы не будут вызваны, например, если вы добавите представление вашего контроллера представления как подпредставление некоторого представления, отличного от UIWindow. В документации Apple говорится, что контроллеры представлений предназначены только для использования с полноэкранными представлениями, которые обычно представлены с использованием одного из методов, описанных выше. Можно проигнорировать совет Apple и связать контроллер представления с подпредставлением другого контроллера представления, но вам придется делегировать вызовы viewWill / DidAppear / Disappear из контроллера представления контейнера во вложенный контроллер вручную.