Вызовите функцию @IBAction, не нажимая кнопку - PullRequest
0 голосов
/ 04 июля 2018

Как я могу позвонить button1() func из calc() с оригинальным sender (например, если я нажму эту кнопку)? Call func с nil - плохое решение, потому что оригинальный отправитель потерян, и я не могу изменить изображение кнопки через sender?.image = UIImage(named: "").

Все ответы в других темах предлагают использовать button.sendActions(for: .touchUpInside). Но это решение не работает.

var var1 = true
var var2 = 1

@IBAction func button1(_ sender: UIBarButtonItem?) {

    if var2 == 1 {

        sender?.image = UIImage(named: "1")

    } else {
        sender?.image = UIImage(named: "2")
    }

}


func calc() {

    if var1 {
        button1(nil)
    }

}

Ответы [ 3 ]

0 голосов
/ 04 июля 2018

Сделать вывод кнопки и передать ссылку как отправителя

@IBOutlet var outletButton: UIButton!

func calc() {

    if var1 {
        button1(outletButton)
    }

}
0 голосов
/ 04 июля 2018
var var1 = true
var var2 = 1


@IBAction func button1(_ sender: UIBarButtonItem?) {
    button1Action()
}

func button1Action() {
    if var2 == 1 {
        sender?.image = UIImage(named: "1")

    } else {
        sender?.image = UIImage(named: "2")
    }
}


func calc() {
    if var1 {
        button1Action()
    }
}
0 голосов
/ 04 июля 2018

можно звонить self.perform(Selector, with: self)

...