在可可MVC收養,查看一無所知型號,此圖中所示:可可MVC限制
但考慮這個例子:
我項目類在我的模型和我想要它的視覺表示。對我來說最爲明顯的是ItemView class,它用Item初始化。
因此,我打破了Cocoa MVC規則,感覺不舒服。但是,我感覺不舒服也沒有類似ItemView。什麼是最實際的解決方案?
在可可MVC收養,查看一無所知型號,此圖中所示:可可MVC限制
但考慮這個例子:
我項目類在我的模型和我想要它的視覺表示。對我來說最爲明顯的是ItemView class,它用Item初始化。
因此,我打破了Cocoa MVC規則,感覺不舒服。但是,我感覺不舒服也沒有類似ItemView。什麼是最實際的解決方案?
如果你真的關心MVC,怎麼樣在你的控制器定義等的方法:
- (UIView*)itemViewForItem:(Item*)item;
負責創建和「填充」你ItemView控件?
然後,您的主控制器類將作爲您的主視圖和所有ItemViews
的控制器。
另一種方法是給每個ItemView自己的ItemViewController。這非常好,如果你的控制器/視圖具有任何複雜性,IMO也是最好的方法。這樣做的缺點是隻能在iOS> 5上支持處理控制器容器。
如果我不僅有ItemView,還有一個屏幕上的EmployeeView和CustomerView - 控制器變成了神對象,在我看來,這比打破Cocoa MVC規則更糟糕。 – goodfella
是的,單獨的控制器就是這種情況:ItemViewControllers,EmployeeViewController等。如果你想遵循MVC,那就是這樣。另一方面,我知道你正在使用自定義視圖:認爲你可以使用標準的'UIView'和「自定義」控制器來達到同樣的效果。 – sergio
順便說一句,我不是說你的設計不好。我認爲有些情況下,稍微規定一些規則是可以的。我一直試圖解釋IMO如何在不違反任何規則的情況下處理MVC(並且不要忘記這在iOS 5上有明顯的缺點,因此您的解決方案可能會更好)。 – sergio
它並不意味着你一直有Item,ItemView,ItemViewController,ItemController等.... –
對我而言,Item和ItemView是非常頻繁的情況。 – goodfella
您的ItemView是usaully的子類? –