Имейте в виду, что типичный способ вытолкнуть представление в стеке UINavigationController - использовать кнопку «Назад» на панели навигации, которую предоставляет вам UINavigationController. Для этого не нужно кодировать.
Однако, если у вас есть представление, которое не отображает панель навигации (например, оно устанавливает self.navigationController.navigationBarHidden = NO
), тогда да, вы должны определить делегата в вашем подклассе UIViewController и сделать делегата ответственным за отклонение представления.
Основание для этого такое же, как и для контроллеров модального вида; контроллер представления не должен знать о том, как он был представлен.