Итак, как мы знаем, UINavigationController автоматически представляет кнопку «Назад», если новый контроллер представления был перенесен в стек контроллера навигатора. Если заголовок не был установлен в предыдущем контроллере представления, кнопка возврата показывает название по умолчанию «Назад». Если я установил заголовок в предыдущем контроллере представления, кнопка «Назад» отобразит это название. Вот как это выглядит:Как изменить сокращенное название кнопки?
Хотя иногда, если заголовок слишком длинный, заголовок кнопки «Назад» изменяется на «Назад». Затем он выглядит следующим образом:
Это ожидаемое поведение, и я хорошо с ним.
Проблема в том, что мое приложение локализовано на 3 разных языках. Я локализую все заголовки контроллера вручную, поэтому, когда полный заголовок отображается на кнопке «Назад», все в порядке.
Проблема возникает, когда заголовок (локализованный) слишком длинный, и его заменяет название по умолчанию «Назад», которое на английском языке (или язык по умолчанию, указанный в настройках iOS), а не на языке, который показывает мое приложение.
Итак, мой вопрос в том, как я могу вручную изменить название кнопки только тогда, когда заголовок предыдущего контроллера слишком длинный?
Я хотел бы добавить, что я попытался заменить кнопку по умолчанию обратно так:
this.NavigationItem.BackBarButtonItem = new UIBarButtonItem (localizedBackTitle, UIBarButtonItemStyle.Plain, null);
Это работает отлично, но назад название кнопки становится «статическим» и не показывает заголовок предыдущего контроллера.
Если IOS не правильно локализовать «Назад» ярлык кнопки возврата, когда ваше приложение правильно установлен для локализации, я бы опубликовал отчет об ошибке с Apple. Включите пример приложения, демонстрирующий проблему. https://bugreport.apple.com – rmaddy
@rmaddy iOS правильно локализует ярлык «Назад». Проблема в том, что язык по умолчанию, который пользователь установил в своем приложении настроек, может отличаться от языка в моем приложении. Я показываю экран, где пользователи могут менять язык в моем собственном приложении. Это требование, которое у меня есть. – Andrius
Все по-другому. Вы не используете стандартную локализацию, так что это не ошибка. – rmaddy