Я пытаюсь привести в порядок свой рабочий код, переместив общие функции в отдельный быстрый файл. У меня проблема с перемещением некоторого кода UIAlert, потому что он вызывает метод в ViewController. Этот метод выполняет ключевой код ViewController, и компилятор не позволяет мне определить его как метод class
.
func showFavouritesAlert() -> Void {
//either shows a list of favourites or message stating no favourites
if defaults.noFavourites {
showNoFavouritesAlert(sender: self)
} else { //favourites are present so show them
let alertController = UIAlertController(title: "UK Tides", message: Const.selectStoredFavouritesMessage, preferredStyle: .alert)
for station in defaults.getFavourites() {//note use of capture list in [] to hold value not reference to index
let action = UIAlertAction(title: station.name, style: .default) { [station] _ in
self.useFavourite(station)
}
alertController.addAction(action)
}
alertController.addAction(UIAlertAction(title: "Cancel", style: .default))
self.present(alertController, animated: true, completion: nil)
print(showSelectFavouritesAlert(sender: self))
}
return
}
func useFavourite(_ tideStation: TideStations.TideStation) -> Void {
//if tide station favourite selected, update all screen elements
defaults.saveStation(tideStation)
tideStationLabel.text = tideStation.name
addDeleteFavouriteButton.setBackgroundImage(UIImage(systemName: "star.slash.fill"), for: .normal)
drawChart()
getAstronomicalTimes(date: selectedDate.noon, forStation: tideStation)
getTidalEvents(date: selectedDate, forStation: tideStation)
}
Проблема заключается в том, что закрытие UIAlertAction вызывает вызов метода useFavourite, когда параметр в оповещение коснется. Когда я помещаю код обработки предупреждений в отдельный файл Swift, я получаю ошибку компилятора. Как я могу выполнить код useFavourite из функции showFavouritesAlert (), если я помещу этот код в отдельный файл?