3

这是当前的设置。

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

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

在点击第 5 个按钮时,会弹出操作表。

  1. 如果我点击 CANCEL actionsheet => actionSheet dismissed => Toolbar 很好。
  2. 如果我点击 ACTION 按钮,我会self.navigationController.toolbarHidden = YES;在 2 秒后执行一个操作...self.navigationController.toolbarHidden = NO; 但现在...工具栏按钮已消失。

进一步调查...

我可以看到工具栏按钮的alpha值似乎设置为 0。

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

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

4

5 回答 5

4

您是否尝试将工具栏项数组设置为零?我遇到了同样的问题,结果证明在设置工具栏的项目时进行检查似乎有效:

if ([self.navigationController.toolbar.items count] > 0) {
   [self.navigationController.toolbar setItems:nil];
}

[self.navigationController.toolbar setItems:toolbarItems]; //toolbarItems is your array of UIBarButtonItems.
于 2013-01-09T22:10:20.430 回答
1

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

这解决了toolbarItems消失的问题。

但是为什么工具栏项消失并设置 alpha=0 的原因对我来说仍然是个谜。如果有人找到原因,请告诉我:)

于 2013-01-10T21:04:25.963 回答
0

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

下面的代码是一种解决方法 -

-(void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
{
    NSArray* items = self.toolbarItems;
    [self setToolbarItems:nil];
    [self setToolbarItems:items animated:NO];
}
于 2013-04-23T19:35:50.723 回答
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];
    }
}
于 2013-05-29T09:11:54.937 回答
0

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

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

self.toolbarItems = toolButtons;
[self.view setNeedsLayout];
于 2016-08-10T15:35:02.953 回答