UIToolbar项目消失 – ios6中的奇怪错误
这是当前的设置。
我有3-5个按钮的navigationController工具栏,点击它们会隐藏工具栏2秒钟,然后再次显示工具栏(第5个按钮除外 – 它会显示带按钮的动作表(动作和取消))。
点击1-4按钮,我做了一个self.navigationController.toolbarHidden = YES;
在2秒之后 ,我设置了self.navigationController.toolbarHidden = NO;
这会带回工具栏,一切都很好。
点击第5个按钮,显示操作表。
- 如果我点击CANCEL actionsheet => actionSheet dismissed =>工具栏就可以了。
- 如果我点击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消失的问题。
但是为什么toolbarItems消失并设置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];