私は、セグ機能の準備で呼び出される非同期関数(geocodeAddressString)を持っています。問題は、この非同期関数がsegueが実行された後に戻ることです。以下の非同期関数は、アドレス文字列を座標に変換します。この準備機能の前にこの非同期機能を呼び出すことはできません。ユーザーアドレスフィールドはいつでもユーザーが編集できるためです。私は保存ボタンが押されたときに非同期関数を呼び出してみましたが、非同期関数が返ってきたときにセグをコーディングしましたが、ボタンが押されてからセグが出るまでの読み込み時間が長すぎます。別のビューでスウィッチキャッチ非同期関数
私の質問は、新しいビューでこの非同期メソッドをキャッチできる方法があるかどうかです。次に、一時的な座標を実際の戻り値に置き換えることができます。どんな助けもありがとう、ありがとう!
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
//convert address to coordinates
let geoCoder = CLGeocoder()
geoCoder.geocodeAddressString(addressTxt.text!) { (placemarks, error) in
guard
let placemarks = placemarks,
let location = placemarks.first?.location
else {
// handle no location found
return
}
let tempCoord = CLLocationCoordinate2D(latitude: (location.coordinate.latitude), longitude: (location.coordinate.longitude))
self.donatedItem = DonatedItem(self.titleTxt.text!, self.itemImg.image!, self.donated, self.descTxt.text!, expirationDate, tempCoord, (user?.uid)!, (self.donatedItem?.itemID)!, self.addressTxt.text!, reserved: false, reservedBy: "NA")
self.donatedItem?.updateItem()
}
switch(segue.identifier ?? "") {
case "saveItem":
homeViewController.isReturningSegue = true
homeViewController.tempItem = self.donatedItem
default:
print("Undefined segue")
}
}
チップをありがとう。できる限り進捗インジケーターを避けることを好みますが、負荷が避けられない状況では、そのフレームワークを念頭に置いていきます。 –