NavigationController UIToolbar 更改项
Posted
技术标签:
【中文标题】NavigationController UIToolbar 更改项【英文标题】:NavigationController UIToolbar Change Items 【发布时间】:2011-11-02 20:54:42 【问题描述】:我想通过隐藏工具栏、更改项目(按钮、固定空间等)并再次显示来更改我的 UIToolbar
中的项目。
我目前在我的UIToolbar
上有一个按钮,按下该按钮时,通过调用[[self navigationController]setToolbarHidden:YES animated:YES];
隐藏工具栏。
如何设置这些项目?是否可以使用界面生成器或者我需要硬编码它们?
【问题讨论】:
由于显而易见的原因,无法使用 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
属性中。如果您需要进一步的帮助或任何解释,请告诉我。
【讨论】:
如何将新工具栏显示在视图中?【参考方案2】:您可以通过这种方式为工具栏设置新项目:
[toolbar setItems:<new_items_array> animated:YES];
它还会为更改设置动画,因此您可能不需要再次隐藏和显示它,这通常不是一个好的 UI 做法。
【讨论】:
我使用这种方法,我可以删除工具栏项,但无法读取它们。为什么会这样?【参考方案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;
];
];
【讨论】:
以上是关于NavigationController UIToolbar 更改项的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionView 比 NavigationController 大
navigationController:willShowViewController: 用于 ModalViewController?