У меня есть глобальная переменная, которую я пытаюсь обновить в одном классе, а затем перейти к другому классу, чтобы обновить UITableview.Глобальная переменная, не обновляющаяся
Первый класс выглядит следующим образом:
class MapViewController: UIViewController, CLLocationManagerDelegate, GMSMapViewDelegate {
var distance: Float = 0.0
//Called once a second
func updateLocation() {
if let mylocation = mapView.myLocation {
self.distance += Distance(self.lastLocation, Coordinate2: mylocation.coordinate)
println(self.distance)
self.lastLocation = mylocation.coordinate
}
}
func fetchValues(instrument: String) -> AnyObject {
if instrument == "Distance" {
return self.distance
}
else {
return ""
}
}
}
В моем втором классе я следующее:
class StatusViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: StatusCell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as StatusCell
let value = MapViewController()
if indexPath.row == 1 {
var distance: Float = Float(value.fetchValues("Distance") as NSNumber)/1.852
cell.InstrumentValue.text = distance.description + " Nm"
}
}
override func viewWillAppear(animated: Bool) {
TableView.reloadData()
}
}
Функция вызывается каждый раз, когда я открываю вкладку, как я предполагал, но для некоторых причина, по которой первый класс проходит 0.0 каждый раз, даже после того, как функция updateLocation() корректно обновляет расстояние и печатает его на Xcode. Что тут происходит?
Но во втором файле я объявляю переменное расстояние, чтобы иметь то же значение, что и глобальные переменную найдена в первом вызове fetchValues функции(). Разве это не так? – user3185748
Извинения. Обновлено и исправлено. - В следующий раз скопируйте и вставьте и отформатируйте свой код правильно.Ваш текущий код был неразборчиво отформатирован и не компилировался; Мне пришлось изменить его. Благодаря! – matt
Извините, я случайно проигнорировал инициализацию экземпляра. Я редактировал приведенный выше код, чтобы отразить 'let value = MapViewController()' Как я могу создать экземпляр, который всегда соответствует 'расстоянию' первого файла? – user3185748