How to addTarget to UIButton without sender

Chameleon

I have a function...

func MyFunc (_ sender: AnyObject) { 
    let n = sender.tag! //do stuff with 'n'
}

which I connect when creating my NewButton...

NewButton.addTarget(self, action: #selector(Main.MyFunc(_:)), for: .touchUpInside)

I'd like to call MyFunc in other areas of my code without a sender. Is it possible to .addTarget to a Button without using sender?

Such as....

NewButton.addTarget(self, action: #selector(Main.MyFunc(n: 5)), for: .touchUpInside)

and...

func MyFunc (n: Int) {
    //do stuff with 'n'
}

I know one solution would be a routing function like...

func router (_ sender: AnyObject) {
    MyFunc(n: sender.tag!)
}

But I'm wondering if there's a more elegant way.

Nordeast

Since the function takes a sender of type AnyObject you can use any object as an argument to the function. You will then just need to conditionally cast it to the type you want.

let button = UIButton()
button.addTarget(self, action: #selector(touched(_:)), for: .touchUpInside)

touched(1 as AnyObject) // Works

@objc func touched(_ sender: AnyObject) {
    if let casted = sender as? Int {
        // Do something with casted as an Int
    } else if let casted = sender as? UIButton {
        // do something with casted.tag
    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

UIButton addTarget Selector is not working

分類Dev

UIButton addTarget with parameters inside UIViewCollectionView

分類Dev

How to subclass an UIButton to pass multiple NSString parameters via addTarget:action:forControlEvents

分類Dev

UIButtonのAddTargetが起動しない

分類Dev

How to know the sender in KVO?

分類Dev

How can I use HTTP Sender to submit a client certificate without the SSL Manager Plugin?

分類Dev

UIButton addTargetはどのように機能しますか?

分類Dev

UIViewへのuibutton.addTargetを含むSwiftクラスが機能しない

分類Dev

迅速な3とローカル機能を備えたUIButton.addTarget

分類Dev

ObjectivecでUIButtonのaddTargetメソッドをオーバーライドする方法

分類Dev

How do I tweak "sender" in an event?

分類Dev

How to get the DataGridTextColumn sender's datagrid parent

分類Dev

How to detect if Chromecast is already connected on Android Sender?

分類Dev

UIButton#addTargetに渡されたメソッドは呼び出されません

分類Dev

UIButton addTargetはiOS7では機能しませんが、IOS6では機能します

分類Dev

How to adjust an UIButton's imageSize?

分類Dev

How to create event for UIButton in ViewController?

分類Dev

How to check UIButton has target?

分類Dev

How to make UIButton shake on tap?

分類Dev

How to trigger UIButton action programmatically

分類Dev

How i can access list of data which is in sender object

分類Dev

How to detect Hint sender-control in OnHint event-handler?

分類Dev

How to properly display message between sender and receiver in reactjs

分類Dev

How can I get sender tag on OnBegin function?

分類Dev

How to verify that `sender` has only sent `two ints` in Mockito?

分類Dev

addTarget:action:forControlEvents:認識されないセレクターがインスタンスに送信されました-uitablecellのuibutton

分類Dev

UIButton.addTargetがアクションを表す文字列の後に「:」を必要とするのはなぜですか?

分類Dev

addTarget:action:forControlEventsを介して複数のNSStringパラメーターを渡すためにUIButtonをサブクラス化する方法

分類Dev

How to set the title of UIButton as left alignment?

Related 関連記事

  1. 1

    UIButton addTarget Selector is not working

  2. 2

    UIButton addTarget with parameters inside UIViewCollectionView

  3. 3

    How to subclass an UIButton to pass multiple NSString parameters via addTarget:action:forControlEvents

  4. 4

    UIButtonのAddTargetが起動しない

  5. 5

    How to know the sender in KVO?

  6. 6

    How can I use HTTP Sender to submit a client certificate without the SSL Manager Plugin?

  7. 7

    UIButton addTargetはどのように機能しますか?

  8. 8

    UIViewへのuibutton.addTargetを含むSwiftクラスが機能しない

  9. 9

    迅速な3とローカル機能を備えたUIButton.addTarget

  10. 10

    ObjectivecでUIButtonのaddTargetメソッドをオーバーライドする方法

  11. 11

    How do I tweak "sender" in an event?

  12. 12

    How to get the DataGridTextColumn sender's datagrid parent

  13. 13

    How to detect if Chromecast is already connected on Android Sender?

  14. 14

    UIButton#addTargetに渡されたメソッドは呼び出されません

  15. 15

    UIButton addTargetはiOS7では機能しませんが、IOS6では機能します

  16. 16

    How to adjust an UIButton's imageSize?

  17. 17

    How to create event for UIButton in ViewController?

  18. 18

    How to check UIButton has target?

  19. 19

    How to make UIButton shake on tap?

  20. 20

    How to trigger UIButton action programmatically

  21. 21

    How i can access list of data which is in sender object

  22. 22

    How to detect Hint sender-control in OnHint event-handler?

  23. 23

    How to properly display message between sender and receiver in reactjs

  24. 24

    How can I get sender tag on OnBegin function?

  25. 25

    How to verify that `sender` has only sent `two ints` in Mockito?

  26. 26

    addTarget:action:forControlEvents:認識されないセレクターがインスタンスに送信されました-uitablecellのuibutton

  27. 27

    UIButton.addTargetがアクションを表す文字列の後に「:」を必要とするのはなぜですか?

  28. 28

    addTarget:action:forControlEventsを介して複数のNSStringパラメーターを渡すためにUIButtonをサブクラス化する方法

  29. 29

    How to set the title of UIButton as left alignment?

ホットタグ

アーカイブ