3

Итак, как мы знаем, UINavigationController автоматически представляет кнопку «Назад», если новый контроллер представления был перенесен в стек контроллера навигатора. Если заголовок не был установлен в предыдущем контроллере представления, кнопка возврата показывает название по умолчанию «Назад». Если я установил заголовок в предыдущем контроллере представления, кнопка «Назад» отобразит это название. Вот как это выглядит:Как изменить сокращенное название кнопки?

Back title
Хотя иногда, если заголовок слишком длинный, заголовок кнопки «Назад» изменяется на «Назад». Затем он выглядит следующим образом:

enter image description here
Это ожидаемое поведение, и я хорошо с ним.

Проблема в том, что мое приложение локализовано на 3 разных языках. Я локализую все заголовки контроллера вручную, поэтому, когда полный заголовок отображается на кнопке «Назад», все в порядке.

Проблема возникает, когда заголовок (локализованный) слишком длинный, и его заменяет название по умолчанию «Назад», которое на английском языке (или язык по умолчанию, указанный в настройках iOS), а не на языке, который показывает мое приложение.

Итак, мой вопрос в том, как я могу вручную изменить название кнопки только тогда, когда заголовок предыдущего контроллера слишком длинный?

Я хотел бы добавить, что я попытался заменить кнопку по умолчанию обратно так:

this.NavigationItem.BackBarButtonItem = new UIBarButtonItem (localizedBackTitle, UIBarButtonItemStyle.Plain, null); 

Это работает отлично, но назад название кнопки становится «статическим» и не показывает заголовок предыдущего контроллера.

+0

Если IOS не правильно локализовать «Назад» ярлык кнопки возврата, когда ваше приложение правильно установлен для локализации, я бы опубликовал отчет об ошибке с Apple. Включите пример приложения, демонстрирующий проблему. https://bugreport.apple.com – rmaddy

+0

@rmaddy iOS правильно локализует ярлык «Назад». Проблема в том, что язык по умолчанию, который пользователь установил в своем приложении настроек, может отличаться от языка в моем приложении. Я показываю экран, где пользователи могут менять язык в моем собственном приложении. Это требование, которое у меня есть. – Andrius

+0

Все по-другому. Вы не используете стандартную локализацию, так что это не ошибка. – rmaddy

ответ

2

iOS обеспечивает локализацию резервного текста, когда он длинный. Вам нужно только сказать IOS, что вы поддерживаете язык так:

<key>CFBundleLocalizations</key> 
    <array> 
    <string>en</string> 
    <string>ja</string> 
    </array> 

Смотрите также: How to change UITabBarController More button's title?

+0

Это будет слово, но дело в том, что я использую пользовательскую локализацию, то есть настройки iOS установлены, скажем, на английский, но у меня есть пользовательское меню в моем собственном пользовательском интерфейсе, который позволяет пользователям выбирать другой язык. – Andrius