【问题标题】:Is it possible to get the SystemItem of a UIBarButtonItem in Swift?是否可以在 Swift 中获取 UIBarButtonItem 的 SystemItem?
【发布时间】:2019-04-27 21:32:54
【问题描述】:

我在UIToolbar 中有一堆UIBarButtonItems。每个都在 Storyboard 中设置了 SystemItem,因此它们看起来像系统图标。

我不想为它们中的每一个都创建一个IBAction,所以我需要一些方法在 switch 语句中区分它们。我假设最好的方法是查看他们的SystemItem,因为这是使他们彼此独一无二的唯一属性。

这是我目前得到的:

@IBAction func buttonPressed(_ sender: UIBarButtonItem) {
    let controller = UIImagePickerController()
    controller.delegate = self

    switch sender.[WHAT DO I PUT HERE?] {
    case .compose:
        controller.sourceType = .photoLibrary
    case .camera:
        controller.sourceType = .camera
    default:
        break
    }

    present(controller, animated: true)
}

如果有更好的方法来区分UIBarButtonItems,我会全力以赴。

【问题讨论】:

  • 使用 .tag 属性是最佳实践
  • 你有解决这个问题的办法吗?

标签: swift uikit uibarbuttonitem


【解决方案1】:

你可以使用

switch sender.tag {
case 0 :
    controller.sourceType = .photoLibrary
case 1 :
    controller.sourceType = .camera
default:
    break
}

并为每个按钮设置不同的标签

【讨论】:

  • 如果别人看不出来,首先需要设置每个按钮的标签。最好避免使用0 的标签值,因为这是默认标签。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多