这是当前的设置。
我有3-5个按钮的navigationController工具栏,点击它们会隐藏工具栏2秒钟,然后再次显示工具栏(第5个按钮除外 - 它会显示带按钮的动作表(ACTION& CANCEL))。
在点击1-4按钮时,我执行了self.navigationController.toolbarHidden = YES;
,在完成 2秒后,我设置了self.navigationController.toolbarHidden = NO;
,这将带回工具栏,一切都是精细。
点击第5个按钮,显示操作表。
self.navigationController.toolbarHidden = YES;
并在2秒后... self.navigationController.toolbarHidden = NO;
但现在......工具栏按钮是GONE。 进一步调查......
我可以看到toolbarButtons似乎将 alpha 值设置为0.
我不知道为什么工具表操作后工具栏项的alpha设置为value = 0。
有谁可以告诉我这个的根本原因?
答案 0 :(得分:3)
您是否尝试将工具栏项数组设置为nil?我遇到了同样的问题,结果发现在设置工具栏的项目时检查一下似乎有效:
if ([self.navigationController.toolbar.items count] > 0) {
[self.navigationController.toolbar setItems:nil];
}
[self.navigationController.toolbar setItems:toolbarItems]; //toolbarItems is your array of UIBarButtonItems.
答案 1 :(得分:1)
我设法以不同的方式解决问题。当操作表出现时我隐藏了工具栏,在buttonAction()
之后,我基本上再次显示工具栏。
这解决了toolbarItems消失的问题。
但是为什么toolbarItems消失并设置alpha = 0的原因对我来说仍然是一个谜。如果有人发现原因,请告诉我:)。
答案 2 :(得分:0)
我有同样的问题,并在其中一个样本中复制。在loadView / viewDidLoad中手动设置工具栏项,然后调用ActionSheet时,它似乎是iOS6中的一个错误。
以下代码是一种解决方法 -
-(void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
{
NSArray* items = self.toolbarItems;
[self setToolbarItems:nil];
[self setToolbarItems:items animated:NO];
}
答案 3 :(得分:0)
我通过将动作代码移动到单独的方法然后通过发送消息performSelector:withObject:afterDelay:
以0.25f秒延迟来调用它来解决它
示例:
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex == 0) {
[self performSelector:@selector(logout) withObject:nil afterDelay:0.25f];
}
}
答案 4 :(得分:0)
我不知道是不是这样,我发现消失的物品实际上在工具栏中,但放在视图的底部。在某些情况下重置它们可能会导致自动布局问题。
我通过在viewcontroller的视图(而不是navigationControllers')上调用setNeedLayout方法来修复它。
self.toolbarItems = toolButtons;
[self.view setNeedsLayout];