Как сделать один IBAction, который выполняет одно и то же действие с двумя кнопками, когда первая из пользовательской ячейки, а другая из раскадровки
2 ответа
Решение
Я обычно держу поддержку UIView
с и UIViewController
Я очень тонок в своих приложениях, и я создаю классы, которые выполняют тяжелую работу. Это делает код более чистым и облегчает повторное использование.
class Player {
static func play() { // Static makes it easier to call from every class, assuming you only play one song at a time
// play logic goes here
}
}
class MyView: UIView {
@IBAction func play() { // connect in IB in your .xib
Player.play()
}
}
class MyViewController: UIViewController {
@IBAction func play() { // connect in IB in your storyboard
Player.play()
}
}
Вам нужны два метода IBAction в отдельных классах (для ячейки и для контроллера представления). Если вы хотите минимизировать повторяющийся код, попробуйте создать специальный класс с этой функциональностью, а затем вызовите его метод в двух методах IBAction.
Также вы можете взглянуть на шаблон проектирования Command для этой цели.