根据视图控制器的呈现方式隐藏左/右BarButtonItem
Hiding left / rightBarButtonItem based on how view controller is presented
我正在尝试在应用程序流程中重用视图控制器(我们称之为 aVC)。我可以通过模态呈现或在 navigationController 上推送视图控制器来显示 aVC。
我在视图中有 rightBarButtonItem 代码确实加载了我仅在模态呈现 aVC 时使用的设置右栏按钮项目。我想知道当我将 pushViewController 用于 aVC 而不是模态显示时,是否有任何方法可以隐藏该按钮。
您可以通过多种方式检测视图是否被推送或呈现:
1) 检测导航控制器是否存在(推送)
if self.navigationController?.viewControllers.count > 0
{
if self.NavigationItem != nil
{
self.NavigationItem!.setLeftBarButtonItem(nil, animated: false)
self.NavigationItem!.setRightBarButtonItem(nil, animated: false)
}
}
2) 检测视图是否(模态呈现)
if self.presentingViewController != nil
{
//View is presented
}
然后到show/hide按钮你可以使用
for item in self!.navigationItem.leftBarButtonItems! // may be rightBarButtonItems!
{
item.enabled = true
item.tintColor = UIColor.whiteColor() You can change color
}
// To hide items
if self.navigationItem.leftBarButtonItems != nil
{
for item in self.navigationItem.leftBarButtonItems!
{
item.enabled = false
item.tintColor = UIColor.clearColor()
}
}
或者您可以将按钮设置为 nil
if self.NavigationItem != nil
{
self.NavigationItem!.setLeftBarButtonItem(nil, animated: false)
self.NavigationItem!.setRightBarButtonItem(nil, animated: false)
}
我正在尝试在应用程序流程中重用视图控制器(我们称之为 aVC)。我可以通过模态呈现或在 navigationController 上推送视图控制器来显示 aVC。
我在视图中有 rightBarButtonItem 代码确实加载了我仅在模态呈现 aVC 时使用的设置右栏按钮项目。我想知道当我将 pushViewController 用于 aVC 而不是模态显示时,是否有任何方法可以隐藏该按钮。
您可以通过多种方式检测视图是否被推送或呈现:
1) 检测导航控制器是否存在(推送)
if self.navigationController?.viewControllers.count > 0
{
if self.NavigationItem != nil
{
self.NavigationItem!.setLeftBarButtonItem(nil, animated: false)
self.NavigationItem!.setRightBarButtonItem(nil, animated: false)
}
}
2) 检测视图是否(模态呈现)
if self.presentingViewController != nil
{
//View is presented
}
然后到show/hide按钮你可以使用
for item in self!.navigationItem.leftBarButtonItems! // may be rightBarButtonItems!
{
item.enabled = true
item.tintColor = UIColor.whiteColor() You can change color
}
// To hide items
if self.navigationItem.leftBarButtonItems != nil
{
for item in self.navigationItem.leftBarButtonItems!
{
item.enabled = false
item.tintColor = UIColor.clearColor()
}
}
或者您可以将按钮设置为 nil
if self.NavigationItem != nil
{
self.NavigationItem!.setLeftBarButtonItem(nil, animated: false)
self.NavigationItem!.setRightBarButtonItem(nil, animated: false)
}