Возможно ли, какие контроллеры представлений находятся в стеке навигации? ... Можете ли вы программно распечатать иерархию представлений, если не используете UINavigationController?
Здесь вы говорите о двух совершенно разных вещах. Контроллеры просмотров и представления не являются одним и тем же объектом. Они оба имеют тенденцию использоваться в ориентированных графах таких объектов, как они, но графики этих двух видов объектов совершенно разные. То есть контроллер навигации является своего рода контроллером представления, который хранит список других контроллеров представлений, и (отдельно) представление хранит массив содержащихся в нем представлений. Наконец, большинство контроллеров просмотра управляют одним представлением, которое обычно содержит другие представления.
Простой способ увидеть иерархию представлений - установить контрольную точку на какой-либо строке в одном из ваших контроллеров представления и использовать отладчик для po [self.view recursiveDescription]
, который будет печатать (в отладчике) описание представления и подсмотров, которые который контролирует контроллер.
Еще более простой способ сделать это состоит в использовании изящного вида отладчика Xcode, который дает вам слоистый вид, что вы можете изучить в 3D:
значок для этого инспектора выглядит как один прямоугольник на другой:
вы можете, конечно, распечатать любой граф объектов, что ваш код может получить доступ, но из вашего комментария, это звучит, как вы должны будете написать метод сделать это. Если вы не используете навигационный контроллер, тогда нет «навигационного стека» для печати. Разумеется, вы можете реализовать свою собственную версию стека навигации, но тогда вам решать, как проверить ее.
Идеально, но есть ли способ программно распечатать иерархию представлений, если вы не используете UINavigationController? – Crashalot
@Crashalot вы можете использовать Chisel Facebook https://github.com/facebook/chisel. У него есть команда 'pvc', которая печатает то, что вы хотите. – rounak