假設我有ViewController A,它的viewModel AVM。 A有一個containerView,它是ViewController B和它的viewModel BVM。 A具有B的參考,AVM具有BVM作爲其子View Model的參考。帶有子MVVM的MVVM如何在iOS中工作?
我有一個C,這是一個管理器類控制B的行爲,從B.
乙調用乙功能,諸如setSDImage(URL)已經一個UIImageView並且具有setSDImage(URL)函數回調。 A有一個按鈕,當按鈕按下時,應該觸發 B的setSDImage(url)。
所以問題是:按下按鈕從A,去AVM,到B,現在,C必須得到B的引用,因爲函數調用是setSDImage(url),它是UI層。此外,回調需要B到實施爲好,這就是爲什麼我不知道如何在這個BVM工作,而不是B.
所以,在這種情況下的問題:
1,經理級C,控制B的行爲。AVM如何在不通過B的引用的情況下聯繫C? (因爲VM不想知道ViewControllers/views)
2,管理員類C應該控制B還是BVM?我讓它控制B而不是BVM,因爲a)設置的圖像函數必須在B的UILayer中完成。b)回調需要在UILayer中實現?
Thx爲答覆。我正在使用SDWebImage庫下載圖像。它們的功能是''[imageView sd_setImageWithURL:[NSURL URLWithString:@「https://graph.facebook.com/olivier.poitrey/picture」] placeholderImage:[UIImage imageNamed:@「avatar-placeholder.png」] 選項:SDWebImageRefreshCached];''。這意味着我應該在視圖控制器中完成它。因爲它直接設置爲UIImageView而不是UIImage。 –
我不是'UIView'上的那些擴展類型的粉絲。從技術上講,代碼沒有在視圖中實現,但是它將這種行爲附加到視圖上,所以對我來說,這感覺就像是對MVC和MVVM的違反。但是,您仍然可以按照相同的模式傳遞URL而不是UIImage。 MVVM的關鍵在於VC可以直接與VM通信,但是VM只能通過協議或KVO間接與VC進行通信,或者您希望通過任何通知機制進行通信。 –