条形按钮项目从导航控制器中消失

Bar Button Items disappear from Navigation Controller

我正在开发的应用程序有一个奇怪的问题。条形按钮项目全部随机消失。

我有一个带有一个按钮(如图所示)的导航控制器,可将用户带到菜单 Table 通过推送 segue 查看控制器。

菜单 Table 视图控制器有 3 行,即菜单选项。

每个菜单选项都会通过推送转接将用户带到另一个视图控制器。每个视图控制器都有一个使用默认按钮显示的后退按钮。

这是一个非常简单直接的设置,没有任何代码。

我注意到很多情况下所有栏按钮项目都消失了。没有后退按钮,没有菜单按钮等。虽然我仍然可以点击该区域并且按钮仍然有效 - 只是不可见。

我没有通过隐藏按钮的代码做任何事情。

我已经注意到很多次,如果我将我的应用程序留在前台并且 phone 进入休眠状态,那么当我回来时按钮就会消失。虽然不总是。

但这并不是按钮消失的唯一一次。我实际上已经看到它们在使用菜单系统时消失了。但是再一次,我看不到导致这种情况的代码。

我目前在 iOS9,但 iOS8 也是如此。

知道可能是什么问题吗?

希望这会有所帮助you.try您认为 didload 方法中的这段代码。

// 1
var rightAddBarButtonItem:UIBarButtonItem = UIBarButtonItem(title: "Add", style: UIBarButtonItemStyle.Plain, target: self, action: "addTapped:")
// 2
var rightSearchBarButtonItem:UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Search, target: self, action: "searchTapped:")
// 3
self.navigationItem.setRightBarButtonItems([rightAddBarButtonItem,rightSearchBarButtonItem], animated: true)

您可以检查以下内容, 如果您在情节提要中插入了导航禁令,请检查是否启用了用户交互以及是否隐藏了导航栏。

您可以检查的第二件事是,如果您的导航栏在栏按钮上有一些视图,正如您所说的,当点击按钮 space 时会调用这些方法。 在构建应用程序时使用调试视图层次结构。

哎呀...事实证明我应该为消失的栏按钮项目负责。

我正在加载一个 SKStoreProductViewController(呈现 App Store 视图控制器)并且我想让颜色与我的应用匹配,所以在网上搜索后我找到了解决方案:

UINavigationBar.appearance().tintColor = myColor

它奏效了。

但这并没有影响我的应用程序栏按钮项目。直到我调用 MFMailComposeViewController(撰写电子邮件)时,问题才出现。

关闭 MFMailComposeViewController 时,我的应用程序栏按钮项目消失了。

好吧,它们并没有消失,它们变成了与导航栏相同的颜色,它们仍然在那里,只是看不见它们。

解决方案是像这样设置 SKStoreProductViewController 的色调:

    myStoreProductViewController.view.tintColor = myColor