在导航控制器中,我在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'"的成员那么吧条按钮的枚举属性是否是系统类型?
感谢
答案 0 :(得分:1)
为storyborad中的UIBarButtonItem
提供标记。
假设Add
tag
值1001
而Cancel
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,这似乎更合适。