【问题标题】:How to determine which UIBarButtomSytemItem has been pressed如何确定按下了哪个 UIBarButtomSytemItem
【发布时间】:2016-01-18 21:40:14
【问题描述】:

在导航控制器中,我在 StoryBoard 中链接了 2 个条形按钮项目:1 个在右侧,系统项目 = 添加,1 个在左侧,系统项目 = 取消。两个按钮都链接到相同的操作。如何确定使用 switch 语句触发了哪个?

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

这会导致错误“Enum case "Add" is not a member of type 'UIBarButtonItem'" 那么栏按钮是否有一个 Enum 属性表明它是系统类型?

谢谢

【问题讨论】:

    标签: swift


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      给故事板中的UIBarButtonItems 加上标签。 说Addtag1001Canceltag1002

      在您的 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
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-11
        • 1970-01-01
        • 1970-01-01
        • 2010-12-05
        • 2023-04-07
        相关资源
        最近更新 更多