如何确定已按下哪个UIBarButtomSytemItem

时间:2016-01-18 12:48:32

标签: swift

在导航控制器中,我在StoryBoard中链接了2个按钮项:右边的1个,System Item = Add,左边的1个,System Item = Cancel。两个按钮都链接到同一个操作。如何确定使用switch语句触发了哪一个?

@IBAction func pressedBarButtonItem(sender: UIBarButtonItem) {
    switch sender {
    case UIBarButtonSystemItem.Add:
      print("UIBarButtonSystemItem.Add button has been pressed ...")
    default:
      break
    }
}

这会导致错误" Enum case" Add"不是类型' UIBarButtonItem'"的成员那么吧条按钮的枚举属性是否是系统类型?

感谢

2 个答案:

答案 0 :(得分:1)

为storyborad中的UIBarButtonItem提供标记。 假设Add tag1001Cancel tag值为1002

比较IBAction中的标签。

@IBAction func pressedBarButtonItem(sender: UIBarButtonItem) {
    switch sender.tag {
    case 1001:
      print("UIBarButtonSystemItem.Add button has been pressed ...")
    case 1002:
      print("UIBarButtonSystemItem.Cancel button has been pressed ...")
    default:
      break
    }
}

答案 1 :(得分:1)

UIBarButtonSystemItem仅在初始化时用于定义系统图像,这些图像不是样式或类型,不会存储或影响按钮。

您可能希望使用标签或插座参考来选择正确的操作,或使用不同的IBAction,这似乎更合适。