简体   繁体   English

如何在swift 3中获取发件人的身份

[英]How to get identity of sender in swift 3

Since swift 3 some AnyObject type has been set to Any.从 swift 3 开始,一些 AnyObject 类型被设置为 Any。 However I can't seem to access the sender tag.但是我似乎无法访问发件人标签。

I first had我第一次有

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!)
    }

It worked well in Swift 2 when sender was an AnyObject.当发送者是 AnyObject 时,它在 Swift 2 中运行良好。 However now the condition is always wrong.然而现在条件总是错误的。 So I tried using tag.所以我尝试使用标签。

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!)
}

But I have an error saying Any?但是我有一个错误说任何? has no member tag.没有会员标签。 The tag is basically lost in space and time forevermore.标签基本上永远消失在空间和时间中。

Any idea to identify the sender somehow ?任何想法以某种方式识别发件人?

You need to cast the sender's type.您需要转换发件人的类型。 If you are sure that the sender is always a UIButton , you can do the following:如果您确定发件人始终是UIButton ,则可以执行以下操作:

if saveButton.tag == (sender as! UIButton).tag {

Or, if you'd rather not use the tag property, this should work too:或者,如果您不想使用tag属性,这也应该有效:

if saveButton == (sender as! UIButton) {

Hope that helps :)希望有帮助:)

Your first way was excellent.你的第一种方式很棒。 To use it, just cast back to AnyObject:要使用它,只需转换回 AnyObject:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if (saveButton === sender as AnyObject) {

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM