(Глядя на поясняющий комментарий выше, я неправильно понял цель первоначального вопроса, лучше было бы управлять отображением View X или View C из самого View C, выключая его по мере необходимости и не изменяя стек вообще.)
Так как вы хотите сохранить панель контроллера навигации, но не хотите иметь возможность вернуться к «C» из «X» (я предполагаю, что есть другой путь из «X»). Тогда вы можете сделать следующее:
self.navigationItem.hidesBackButton = YES;
из ViewController X, внутри метода viewDidLoad
.
X все еще в стеке, C все еще в стеке, но вы получаете визуальное представление, которое вы хотели.
В противном случае вам, вероятно, придется свернуть новый NavigationContoller, вставить X в его стек и перейти к нему, оставив свой старый стек (и ViewController) позади.