条形按钮项目从导航控制器中消失
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
我正在开发的应用程序有一个奇怪的问题。条形按钮项目全部随机消失。
我有一个带有一个按钮(如图所示)的导航控制器,可将用户带到菜单 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