Подтвердить что ты не робот

UINavigationItem titleView "игнорируется, если leftBarButtonItem установлен"?

Документация для свойства UINavigationItem titleView говорит: "Это свойство игнорируется, если leftBarButtonItem не равно нулю".

Однако в моем тестировании были установлены свойства titleView и leftBarButtonItem, и оба они выглядят нормально. Я тестировал все симуляторы в своем Xcode: 4.3, 5.0 и 5.1. Кто-нибудь знает, неправильно ли написана документация или она правильная в некоторых более старых версиях (например, 4.2, 3.x), которые я не смог проверить?

4b9b3361

Ответ 1

Проверьте документацию для свойства leftBarButtonItems, в нем говорится:

Если не хватает места для отображения всех элементов в массиве, те, которые будут перекрывать заголовок (если есть) или кнопки на правой стороне панели не отображаются.

Итак, что сказанное для titleView, вероятно, неверно.

Ответ 2

Я думаю, что документация неверна, и вы должны подать отчет об ошибке.

Ответ 3

Я тестировал это на iOS6.1 и iOS7. Мой UINavigationItem имел не-nil titleView и leftBarButtonItem, и оба вида titleView и leftBarButtonItem были видны. Я подал радар.

Ответ 4

Я тоже столкнулся с этим. В моей конкретной проблеме появятся элементы titleview и leftbar. Однако, если бы у меня была кнопка "Назад", мое название исчезло бы в Push и использовало бы название по умолчанию. Если у меня есть пользовательский набор uibuttonitem для левой, он отлично работает. Так что это похоже на кнопку "Назад". Я решил решить, установив атрибуты заголовка и не сделав пользовательский вид.

Ответ 5

Я просто столкнулся с этим и нашел то же самое, что и вы. Я также отметил, что документация для UINavigationItem была в последний раз обновлена ​​в 2011 году, в то время как UINavigationBar получал обновления как в iOS 5, так и в версии 6, поэтому это поведение изменилось с момента последнего обновления документа UINavigationItem.

Очень запутанно.

Отмечено это также в ссылке UINavigationController:

"Контроллер навигации обновляет середину панели навигации следующим образом:

...

Если новый контроллер верхнего уровня имеет собственное представление заголовка, панель навигации отображает это представление вместо заголовка заголовка по умолчанию. Чтобы указать собственное представление заголовка, установите свойство titleView элемента навигации диспетчера представлений.

Так как там есть leftBarByButton (кнопка назад) по определению в любое время, когда вы находитесь в режиме без полномочий root, это наверняка кажется ошибкой в ​​документации UINavigationItem