Я пытался передать переменную из одного контроллера представления в другой. Мой первый контроллер представления собирает значение переменной и передает его через UIStoryboardSegue в "WeatherTableViewController" . В «WeatherTableViewController» я применил значение к панели поиска. Я не могу понять, почему это не работает. Когда я наблюдаю значение в отладке, кажется, что оно имеет значение. Я разместил оба вида контроллеров. Кажется, проблема в updateWeatherForLocation(location: finalName)
. Я проверил, чтобы убедиться, что все соединения сделаны через раскадровку. Я уверен, что не могу понять это!
//Return the name of the city//
CLGeocoder().reverseGeocodeLocation(location) { placemarks, error in
let locationName = placemarks?.first?.locality ?? "Unknown Location"
self.location.text = locationName
}
}
@IBAction func foreCast(_ sender: Any) {
nameText = location.text!
performSegue(withIdentifier: "Week", sender: self)
func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let vc = segue.destination as! WeatherTableViewController
vc.finalName = self.nameText
}
}
}
class WeatherTableViewController: UITableViewController, UISearchBarDelegate {
var finalName = ""
@IBAction func close() {
dismiss(animated: true, completion: nil)
}
@IBOutlet weak var searchBar: UISearchBar!
var forecastData = [Weather]()
override func viewDidLoad() {
super.viewDidLoad()
//location = finalName
searchBar.delegate = self
searchBar.text = finalName
updateWeatherForLocation(location: finalName)
}
}