Я обнаружил что-то интересное.
Если вы создаете подкласс UINavigationController
, переопределяете метод pushViewController:animated:
и делаете что-то вроде этого: (имейте в виду, что я использую ARC)
UIBarButtonItem *backButton = [[UIBarButtonItem alloc]
initWithTitle: @"Back"
style: UIBarButtonItemStyleBordered
target: nil action: nil];
viewController.navigationItem.backBarButtonItem = backButton;
[super pushViewController:viewController animated:animated];
Тогда для всех ViewControllers
, которые нажимаются вашим навигационным контроллером, в них автоматически будет кнопка «Назад». Если вы хотите изменить текст для определенных контроллеров представления, вы можете попробовать и, возможно, привести viewcontroller к определенному классу или вашему собственному пользовательскому протоколу (который наследует ваш viewcontroller, от которого может быть метод типа backButtonText
или что-то глупое) может дать вам определенную информацию о контроллере представления, который идет в комплекте, так что вы можете настроить текст кнопки назад для него. Теперь текст кнопки «Назад» обрабатывается в месте, которое должно нести ответственность. Я должен признать, что создание новой кнопки для изменения текста - отстой, ну да ладно.
Может кто-нибудь придумать причину, почему бы не сделать это так? По крайней мере, вам не нужно возиться с названиями viewcontroller или не забудьте создать новую кнопку назад, прежде чем нажимать viewcontroller на контроллере навигации.