[英]How to bind image to UIImageView with rxswift?
我有viewModel:
class EditFoodViewViewModel {
private var food: Food
var foodImage = Variable<NSData>(NSData())
init(food: Food) {
self.food = food
self.foodImage.value = food.image!
}
}
和ViewController:
class EditFoodViewController: UIViewController {
public var food: EditFoodViewViewModelType?
@IBOutlet weak var foodThumbnailImageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
guard let foodViewModel = food else { return }
foodViewModel.foodImage.asObservable().bind(to: foodThumbnailImageView.rx.image).disposed(by: disposeBag)
}
}
在viewController的最后一行(我的UIImageView所在的行)中,出現一個get錯誤:
無法推斷出通用參數“ Self”
如何解決我的問題? 如何使用rxSwift將圖像設置為imageView?
幾乎總是看到錯誤:“無法推斷出通用參數'Self'”,這意味着類型是錯誤的。 在這種情況下,您嘗試將Observable<NSData>
綁定到Observable<Image?>
。
您的代碼還有其他一些問題。
用var
關鍵字定義Subject類型的情況非常罕見,這不是那些罕見的情況之一。 您的foodImage
應該是let
而不是var
。
不建議使用Variable
; 不要使用它。 在這種情況下,您甚至根本不需要主題。
NSData
在現代Swift中也不適當。 改用Data
。
根據您在此處顯示的內容,我希望您的代碼看起來像這樣:
class EditFoodViewViewModel: EditFoodViewViewModelType {
let foodImage: Observable<UIImage?>
init(food: Food) {
self.foodImage = Observable.just(UIImage(data: food.image))
}
}
class EditFoodViewController: UIViewController {
@IBOutlet weak var foodThumbnailImageView: UIImageView!
public var food: EditFoodViewViewModelType?
private let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
guard let foodViewModel = food else { return }
foodViewModel.foodImage
.bind(to: foodThumbnailImageView.rx.image)
.disposed(by: disposeBag)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.