交换栏按钮项目

时间:2016-02-16 21:27:54

标签: swift uibutton uibarbuttonitem

我想交换一个条形按钮项目,具体取决于我认为相当直接的UISegmentControl

我最初的计划是:

  • 为细分更改时创建IBAction
  • 确定我们在哪个细分市场
  • 隐藏相应的按钮

代码是这样的

@IBAction func segmentChanged(sender: UISegmentedControl) {
     UIView.animateWithDuration(0.25) { () -> Void in
           if(sender.selectedSegmentIndex == 0) {
                barButtonA.hidden = true
                barButtonB.hidden = false
           } else {
                barButtonA.hidden = false
                barButtonB.hidden = true
           }
     }
}

按预期隐藏了正确的按钮,但奇怪的是,按钮仍然存在的空间,所以看起来很奇怪。

接下来,我在界面构建器中看到每个按钮都有一个父容器(UIBarButtonItem s)。我不确定他们为什么需要,但是我通过IBOutlets将它们连接起来,这样我就可以在功能中隐藏/显示它们,但是这些都不起作用,因为它们不是#&# 39; t有一个隐藏的属性。

最后,我尝试使用以下代码的新商店:

@IBAction func segmentChanged(sender: UISegmentedControl) {
     UIView.animateWithDuration(0.25) { () -> Void in
           if(sender.selectedSegmentIndex == 0) {
                self.navigationItem.rightBarButtonItem = self.barButtonItemA
           } else {
                 self.navigationItem.rightBarButtonItem = self.barButtonItemB
           }
     }
}

但没有运气!在这里,它似乎只是动画交换两个按钮位置/顺序,而不是实际删除任何一个。

我做错了什么?谢谢!

1 个答案:

答案 0 :(得分:0)

哟应该结合你拥有的两个功能。 因此交换它们并改变隐藏状态。

更新:
您是否尝试先删除navigation.barbutton。

self.navigationItem.rightBarButtonItem = nil