大丈夫ですので、ビューがロードされると、設定された範囲のユーザーの現在の場所内にジオポイントを持つParseオブジェクトが読み込まれます。これは、ここに動作します。これで「ロケーションの変更」ごとにテーブルビューを常に更新するにはどうすればよいですか?
let query: PFQuery = PFQuery(className: "Events")
query.whereKey("location", nearGeoPoint: myGeoPoint, withinMiles: range)
query.findObjectsInBackgroundWithBlock { (objects: [PFObject]?, error) in
if error == nil {
print(objects)
for object in objects! {
self.names.append(object["Name"] as! String)
self.descriptions.append(object["description"] as! String)
}
self.tableView.reloadData()
} else {
print(error)
}
}
}
問題は、私は私が予測し、ユーザの位置の変更は、かなり頻繁に起こるのだろうたびreloadData
常に ORちょうどこのテーブルを持っているのいずれか必要です。範囲内にあるアイテムを表示する必要があるため、どこかにユーザードライブを置くことはできず、テーブルには最後の場所のアイテムが表示されます。
アプリの他の部分については、特定のボタンをクリックしたときにテーブルが更新されるだけですが、このテーブルを常に正しく更新する方法やユーザーの場所が変更されるたびに更新する必要があります。私は1秒の数分の1に設定されたタイマーを使用しようとしましたが、それは問題を引き起こし、正しい方法ではないようです。
どうすればいいですか?いつもテーブルを更新してみましたが、私は試しました。
override func viewDidAppear(animated: Bool) {
self.tableView.reloadData()
}
しかし何もしません。 loadObjects()
も見ましたが、エラーがありました。これを達成する最良の方法は何ですか?
EDITS:
if (CLLocationManager.locationServicesEnabled())
{
locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestAlwaysAuthorization()
//locationManager.startUpdatingLocation() //so not always updating
locationManager.startMonitoringSignificantLocationChanges()
}
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
// locations contains an array of recent locations, but this app only cares about the most recent
// which is also "manager.location"
myLoc = PFGeoPoint(location: manager.location)
print("significant change - \(myLoc)")
tableView.reloadData()
}
func locationManager(manager: CLLocationManager, didFailWithError error: NSError!) {
print("failed")
}
重要な場所の変更を通知するように登録し、アプリケーションがフォアグラウンドになったときにすぐにテーブルビューをリロードするか、フラグを設定して、アプリケーションがフォアグラウンドになったときにテーブルビューをリロードします。 – vadian
フォアグランドにはどういう意味ですか?コールする機能がありますか? – skyguy
いいえ、呼び出されるAppDelegateにデリゲートメソッドがあります。私はちょうど、アプリケーションがアクティブでない間にテーブルビューを再ロードすることは意味をなさないと指摘したいと思います。 – vadian