0
私は、利用可能なKolodaViewを実装しています:https://github.com/Yalantis/Koloda。 viewForCardAt
関数はUIView
を返し、UIView
には画像をダウンロードする必要があります。問題は、関数自体がUIView
の戻り値の型を期待していることですが、私はsetupCard
メソッドの完了ブロックがいつ実行されたかを知る方法がないため、完了ブロックでの代わりに空の 。完成ブロックにreturn a
を追加しようとしましたが、これは許可されていません。補完ブロックの実行後にカードが返されることを保証するために、以下のコードをどのように変更できますか?完了ブロックスウィフトの返信
func koloda(_ koloda: KolodaView, viewForCardAt index: Int) -> UIView {
var a = FlatCard()
if let listings = all_listings {
if index < listings.count {
setupCard(index: index, listings: listings, { (complete, card) in
if (complete) {
a = card
}
})
return a
}
}
return a
}
func setupCard(index: Int, listings : [Listing], _ completionHandler: @escaping (_ complete: Bool, _ card : FlatCard) ->()) ->(){
let curr_card = FlatCard()
if let main_photo_url = listings[index].pic1url {
URLSession.shared.dataTask(with: main_photo_url, completionHandler: { (data, response, error) in
if (error != nil) {
print(error)
return
}
DispatchQueue.main.async {
curr_card.mainFlatImage = UIImage(data: data!)
}
})
completionHandler(true,curr_card)
return
} else {
completionHandler(true,curr_card)
return
}
}
'FlatCard'は何ですか? –