В этом случае я бы не использовал кнопки на ваших ячейках. Вместо этого вы должны подключиться к методу делегата didSelectItemAt и просто добавить необходимую информацию в модель данных:
struct Country {
let imageName: String
let sound: Sound // You didn't specify what type the sound1 object is but you get the gist
}
Итак, массив стран теперь будет содержать эту новую структуру, а не только необработанные строки :
let countries = [
Country("country1", sound1),
Country("country2", sound2),
...
]
Затем вы можете получить именно тот звук, который хотите воспроизвести, из indexPath, переданного в didSelectItemAt:
let sound = self.countries[indexPath.row].sound
sound.play()
Вам также нужно будет настроить, как вы устанавливаете изображение ячейки в cellForItemAt:
let imageName = self.countries[indexPath.row].imageName
cell.countryImageView.image = UIImage(named: imageName)