UIToolbar项目消失 – ios6中的奇怪错误

这是当前的设置。

我有3-5个按钮的navigationController工具栏,点击它们会隐藏工具栏2秒钟,然后再次显示工具栏(第5个按钮除外 – 它会显示带按钮的动作表(动作和取消))。

点击1-4按钮,我做了一个self.navigationController.toolbarHidden = YES;2秒之后 ,我设置了self.navigationController.toolbarHidden = NO; 这会带回工具栏,一切都很好。

点击第5个按钮,显示操作表。

  1. 如果我点击CANCEL actionsheet => actionSheet dismissed =>工具栏就可以了。
  2. 如果我点击ACTION按钮,我会做一个self.navigationController.toolbarHidden = YES; 2秒后…… self.navigationController.toolbarHidden = NO; 但现在……工具栏按钮是GONE。

进一步调查……

我可以看到toolbarButtons似乎将其alpha值设置为0。

我不知道为什么工具表操作后工具栏项的alpha设置为value = 0。

谁能告诉我这个的根本原因?

您是否尝试将工具栏项数组设置为nil? 我有同样的问题,事实certificate,当你设置工具栏的项目时,检查一下似乎工作:

 if ([self.navigationController.toolbar.items count] > 0) { [self.navigationController.toolbar setItems:nil]; } [self.navigationController.toolbar setItems:toolbarItems]; //toolbarItems is your array of UIBarButtonItems. 

我设法以不同的方式解决问题。 当操作表出现时我隐藏工具栏,在buttonAction() ,我基本上再次显示工具栏。

这解决了toolbarItems消失的问题。

但是为什么too​​lbarItems消失并设置alpha = 0的原因对我来说仍然是一个谜。 如果有人发现原因,请告诉我:)

我有同样的问题,并在其中一个样本中复制。 在loadView / viewDidLoad中手动设置工具栏项,然后调用ActionSheet时,它似乎是iOS6中的一个错误。

下面的代码是一个解决方法 –

 -(void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex { NSArray* items = self.toolbarItems; [self setToolbarItems:nil]; [self setToolbarItems:items animated:NO]; } 

我通过将动作代码移动到单独的方法然后通过发送消息performSelector:withObject:afterDelay: with 0.25f second delay来调用它来解决它

例:

 -(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { if (buttonIndex == 0) { [self performSelector:@selector(logout) withObject:nil afterDelay:0.25f]; } } 

我不知道是不是这样,我发现消失的物品实际上在工具栏中,但放在视图的底部。 在某些情况下重置它们可能会导致自动布局问题。

我通过在viewcontroller的视图(而不是navigationControllers’)上调用setNeedLayout方法来修复它

 self.toolbarItems = toolButtons; [self.view setNeedsLayout];