Звучит так, как будто вы прикрепляете кнопку к своей кнопке.Вы можете сделать это, или использовать кнопку IBAction.Я не думаю, что это работает правильно, если вы сделаете и то, и другое, что может быть вашей проблемой.
Если ваше нажатие кнопки вызывает IBAction, вы можете получить тег кнопки из параметра отправителя вдействие, а затем ваш код IBAction создает экземпляр контроллера представления и устанавливает свойство контроллера представления для тега отправителя перед его отображением.
Если вы хотите присоединить переход к кнопке, то prepare(for:sender:)
метод получит кнопку в параметре отправителя.Затем вы можете попытаться преобразовать отправителя в `UIButton, и, если приведение выполнено успешно, извлеките тег кнопки и передайте его контроллеру представления назначения.Примерно так:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
switch segue.identifier {
case "playingSongs":
if let sendingButton = sender as? UIButton,
let controller = segue.destination as? OpenedVC { //Don't use a force-cast
let buttonTag = sendingButton.tag
controller.playingSong = names[buttonTag]
}
// The rest of your code to follow
}
}
РЕДАКТИРОВАТЬ:
Я исправил приведенный выше код, изменив два приведения в необязательной привязке if let
для использования as?
.
Обратите внимание, что вам следует избегать принудительного приведения (as!
), поскольку в случае сбоя он вызывает сбой.