Ну, обсуждение, связанное с вопросом, имеет ответ прямо в нем. UINavigationController должен получить сообщение «viewWillAppear», чтобы он мог отправлять эти сообщения контроллерам представления, которые вы на него нажимаете.
По иронии судьбы, если вы не делаете то, что рекомендует Apple, и вы подкласс UINavController для вашего контроллера представления, то все работает отлично.
Однако, если вы просто создаете UINavController внутри вашего контроллера представления, то вам нужно реализовать "viewWillAppear", "viewDidAppear" и так далее и перенаправить их на ваш контроллер nav.
Обратите внимание, что это особенно важно, если вы используете Three20, потому что его иерархия контроллера представления ожидает получения сообщения "viewWillAppear". Если это не так, вы можете получить TTTableViews, которые не рисуют.