我认为这取决于它是否会让你的生活更轻松。我喜欢做的另一种选择是编写UIView
专门用于显示“概念”模型(如汽车)的复合子类,然后在它们上编写类别以使用特定模型实现填充视图信息。这样,您可以在更改模型时重新使用视图,但仍然可以防止某些逻辑使视图控制器混乱。我尝试为使用 aUISegmentedControl
或其他东西切换的完全不同的视图保留一个视图控制器。
UIView
编辑: a及其填充类别的示例。
@interface CarView : UIView
@property (strong) UILabel *modelLabel;
@property (strong) UILabel *makeLabel;
@property (strong) UILabel *yearLabel;
//etc
@end
然后你有一个特定于模型的类别,虽然视图上的类别确实更适合控制器层;虽然有点违反 MVC,但我认为从职责分配的角度来看它工作得很好,不会将您的主视图实现与任何数据实现耦合,并使您的视图控制器更精简,所以我认为值得权衡。
@interface CarView (CarEntityPopulating)
- (void)populateFieldsWithEntity:(NSManagedObject *)entity;
@end
@implementation CarView (CarEntityPopulating)
- (void)populateFieldsWithEntity:(NSManagedObject *)entity
{
self.modelLabel.text = [entity valueForKey:@"name"];
self.makeLabel.text = [[entity valueForKey:@"make"] valueForKey:@"name"];
self.yearLabel.text = [[entity valueForKey:@"year"] stringValue];
//etc....
}