#iphone #objective-c #xcode #uinavigationcontroller #uitoolbar
#iPhone #objective-c #xcode #uinavigationcontroller #uitoolbar
Вопрос:
Я хочу изменить элементы в моем UIToolbar
, скрыв панель инструментов, изменив элементы (кнопка, фиксированный пробел и т. Д.) И открыв его снова.
В настоящее время у меня есть кнопка UIToolbar
, которая при нажатии скрывает панель инструментов при вызове [[self navigationController]setToolbarHidden:YES animated:YES];
.
Как я могу установить эти элементы? Возможно ли это с помощью interface builder или мне нужно их жестко закодировать?
Комментарии:
1. Невозможно использовать IB по очевидным причинам. Вам нужно будет добавить объекты в UIToolbar, установить для них значение null (при их скрытии) и переназначить их обратно в UIToolbar, когда вы захотите показать его снова.
Ответ №1:
Это нестандартное поведение, но оно должно быть выполнимым. Вместо удаления и добавления новых кнопок на существующую панель инструментов можно создать другую панель инструментов, которая вместо этого исчезает. Это упростило бы кодирование / отладку. В общем, для этого просто требуется меньше «беспорядка».
Для достижения желаемого поведения вы могли бы сделать что-то вроде:
float animationDuration = .25;
[UIView animateWithDuration:animationDuration animations:*{
// Remove the old toolbar.
self.oldToolbar.alpha = 0;
// Fade the new toolbar in.
self.newToolbar.alpha = 1;
}];
В этом примере предполагается, что вы уже загрузили другую панель инструментов в newToolbar
свойство. Дайте мне знать, если вам нужна дополнительная помощь или какие-либо объяснения.
Комментарии:
1. Как мне отобразить новую панель инструментов?
Ответ №2:
Вы можете установить новые элементы для панели инструментов таким образом:
[toolbar setItems:<new_items_array> animated:YES];
Он также анимирует изменение, поэтому вам может не понадобиться скрывать и показывать его снова, что в целом не является хорошей практикой пользовательского интерфейса.
Комментарии:
1. Я использую этот метод, и я могу удалять элементы панели инструментов, но не могу их перечитывать. Почему это так?
Ответ №3:
Немного странный… это немного сложно, но должно быть в порядке:
[UIView animateWithDuration:0.5f animations:^{
// Remove the old toolbar.
self.oldToolbar.alpha = 0;
} completion:^(BOOL finished) {
//add code to change toolbar.
[UIView animateWithDuration:0.5f animations:^{
// Fade the new toolbar in.
self.newToolbar.alpha = 1;
}];
}];