Stephen C
Stephen C

Reputation: 57

compare sender: Any? to UIBarButtonItem

I am new to swift, and just happen to have Swift 3 released, but apple document still using Swift2 syntax.

Understand that below (Swift2)

@IBOutlet var weak saveButton:UIBarButtonItem!

This method lets you configure a ViewController before it's presented.

override func prepareForSegue(segue: UIStoryboardSegue, sender:AnyObject?) {
if saveButton === sender {   //originally swift 2 can compare

}

Has changed to (Swift3)

override func prepare(for segue: UIStoryboardSegue, sender:Any){
}

Now on swift 3 I cannot check if sender = saveButton

I am very new to Swift, is that I need to cast it like sender as UIBarButtonItem?

Original Apple Guide

Upvotes: 4

Views: 2202

Answers (3)

pedrouan
pedrouan

Reputation: 12910

You can also:

1) Select a segue you have created as a connection between a UIBarButtonItem and a target controller.

2) Name it:

enter image description here

3) Test it:

func prepare(for segue: UIStoryboardSegue, sender: AnyObject?) {

    if segue.identifier == "MyIdentifier" {
        // actions
    }
}

Upvotes: 0

Nirav D
Nirav D

Reputation: 72460

Try like this inside prepareforsegue method.

override func prepare(for segue: UIStoryboardSegue, sender:Any){
     if let barButton = sender as? UIBarButtonItem {
          if saveButton == barButton {
               //Do what you want
          }
     }
}

Upvotes: 10

M090009
M090009

Reputation: 1139

If you need to cast you just say sender as! UIBarButtonItem as easy as that.

Upvotes: 0

Related Questions