根据视图控制器的呈现方式隐藏left / rightBarButtonItem

时间:2016-07-31 21:41:46

标签: ios uiviewcontroller uinavigationcontroller pushviewcontroller presentviewcontroller

我正在尝试在应用流程中重用视图控制器(让我们称之为aVC)。我可以通过模态演示或在navigationController上推送视图控制器来显示aVC。

我在视图中有rightBarButtonItem代码加载了设置右键栏项目,我只在模拟呈现aVC时使用它。当我使用pushViewController进行aVC而不是模态演示时,我想知道是否有任何方法可以隐藏该按钮。

1 个答案:

答案 0 :(得分:0)

您可以通过多种方式检测视图是否被推送或显示:

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
}

然后显示/隐藏您可以使用的按钮

  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)
}