из всего, что я вижу, self.navigationController UIViewController предназначен для того, чтобы всегда возвращать соответствующий UINavigationController, пока UIViewController существует в стеке UINavigationController. Вероятно, это один из тех случаев, когда я сталкиваюсь с собой чаще, чем хотел бы, когда простая ошибка кодирования маскируется под нечто гораздо более сложное. В этих случаях мне обычно везет, когда я настраиваю совершенно новый проект Xcode с минимальным кодом, необходимым для воспроизведения проблемы, и чаще, чем в этом процессе, я нахожу исправление для чего-то, что я упустил, и которое затем можно легко применить в основном проекте. , Извините, я не могу предложить больше подробностей, но то, что вы описываете, похоже, противоречит дизайну платформы Cocoa Touch, и если вы все еще можете воспроизвести его в минимальном проекте Xcode, написанном в строгом соответствии с документацией, это может быть хорошая идея подать отчет об ошибке в Apple. Хотелось бы надеяться, что вы просто найдете что-то простое, что вы упустили из виду, и будете пинать себя через несколько минут =)