Show/Hide barButtonItem

Show/Hide barButtonItem

我正在尝试 show/hide UIBarButtonItem。我在storyboard的右边加了一个barButton。然后在viewDidLoad中,我把rightBarButtonItem变成了nil。后来,我把它设置为我在 storyboard 中添加的 button。这是我的代码:

// Right barButtonItem added in storybord:
@IBOutlet weak var deleteBarButton: UIBarButtonItem! 

// viewDidLoad
self.navigationItem.rightBarButtonItem = nil

// Later on...
self.navigationItem.rightBarButtonItem = self.deleteBarButton

当我将 self.deleteBarButton 设置为 rightBarButtonItem 时,没有任何反应。它没有显示它。我做错了什么,correct/most 有效的 show/hide 方法是什么 barButtonItem

更新

我尝试了以下方法:

self.deleteBarButton.hidden = true

但我收到以下错误:

UIBarButtonItem does not have a member named 'hidden'

更新 2

您可以将按钮的文本设置为空:

self.deleteBarButton.title = "";

更新 1

我会用enabled 属性照亮按钮如下(虽然它不能完全使按钮不可见,但它让用户知道它不会执行操作)。

这可以作为一个变量让您知道按钮在您的案例中是隐藏的:

发光:(放置在 ViewDidLoad 中)

self.deleteBarButton.enabled = true;

变暗:(稍后放置)

self.deleteBarButton.enabled = false;

然后我将添加以下内容以使其完全消失:

self.navigationController?.navigationItem.rightBarButtonItem?.tintColor = UIColor.clearColor();

尝试在 viewDidLoad 中手动创建您的 barButton,然后 show/hide 您的按钮。

代码:

var barButton: UIBarButtonItem!

func viewDidLoad() {
    super.viewDidLoad()
    barButton = UIBarButtonItem(title: "Title", style: .Plain, target: self, action: Selector("target_function"))
    self.navigationItem.rightBarButtonItem = barButton
}

func someFunction() {
    self.navigationItem.rightBarButtonItem = nil
    // or
    self.navigationItem.rightBarButtonItem = barButton
}

刚刚得到答案!您所要做的就是创建一个 strong IBOutlet,然后您可以执行以下操作:

// viewDidLoad
self.navigationItem.rightBarButtonItem = nil

// Later on...
self.navigationItem.rightBarButtonItem = self.deleteBarButton