Как вернуться к правильному контроллеру представления, если текущий представлен и нажат?

У меня есть контроллер представления, скажем, A, к которому обращаются три других контроллера представления, скажем, B, C и D.

B представляет UIViewController A модально.

C и D являются частью UINavigationController и, таким образом, выдвигают контроллер представления A.

Если бы все они имели модальные переходы, я мог бы просто сделать switch(presentingViewController), чтобы определить, кто является контроллером представления, которому я должен unwind. Проблема в том, что поскольку два из них находятся в навигационном стеке (B и C), они никогда не будут presentingViewController.

Как решить эту загадку?


person rgoncalv    schedule 03.02.2018    source источник
comment
Используете ли вы раскадровку и переходы? Если это так, то все, что вам нужно сделать, это реализовать одно и то же имя метода раскрутки в каждом контроллере представления, и переход раскрутки определит во время выполнения, куда ему нужно идти; см. разработчик .apple.com/library/content/technotes/tn2298/   -  person Paulw11    schedule 03.02.2018


Ответы (1)


Проверьте, существует ли навигационный контроллер в A. Если это так, вы бы pop, если нет, вы бы dismiss.

person Daniel Storm    schedule 03.02.2018
comment
Мне нужно сделать некоторую пользовательскую логику в зависимости от того, к чему я отматываюсь. Следовательно, недостаточно просто вытолкнуть/отклонить - person rgoncalv; 03.02.2018
comment
Похоже, A слишком много делает. У вас может быть делегат, который активирует viewWillDisappear A, которые слушают B, C и D. Не зная всей вашей логики, трудно сказать. - person Daniel Storm; 03.02.2018
comment
Считаете ли вы, что шаблон делегирования этого ответа (stackoverflow.com/questions/13898324/) будет лучше или у вас? - person rgoncalv; 03.02.2018
comment
Написание одного и того же кода в функциях prepareSegue всех родительских контроллеров было бы излишним. Делегат звучит как лучшее решение здесь. Если в обоих случаях достаточно одной строки, я не думаю, что это имеет значение. - person Arun Reddy; 03.02.2018