从swift 3开始,一些AnyObject类型被设置为Any。 但是我似乎无法访问发件人标签。
我第一次
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (saveButton === sender) {
let name = nameField.text ?? ""
program = Program(id: -1, name: name, type: capsulesTypes![typeSelected], planning: planningString, date: timePicker.date.timeIntervalSince1970, intensity: Int(intensitySlider.value), enabled: false)
sendProgramToAPI(program!)
}
当发件人是AnyObject时,它在Swift 2中运行良好。但是现在条件总是错误的。所以我尝试使用标签。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (saveButton.tag == sender.tag) {
let name = nameField.text ?? ""
program = Program(id: -1, name: name, type: capsulesTypes![typeSelected], planning: planningString, date: timePicker.date.timeIntervalSince1970, intensity: Int(intensitySlider.value), enabled: false)
sendProgramToAPI(program!)
}
但我有一个错误说任何?没有会员标签。标签在空间和时间上基本上都会丢失。
是否有想法以某种方式识别发件人?
答案 0 :(得分:4)
您需要投射发件人的类型。如果您确定发件人始终是UIButton
,则可以执行以下操作:
if saveButton.tag == (sender as! UIButton).tag {
或者,如果您不想使用tag
属性,这也应该有效:
if saveButton == (sender as! UIButton) {
希望有所帮助:)
答案 1 :(得分:0)
你的第一条路很棒。要使用它,只需转回AnyObject:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (saveButton === sender as AnyObject) {