我想知道我设置UIViewController的方法是最优的还是简单的愚蠢。
我在某个类别中输入了一个enum。让我们说6个不同的类别。 因此,取决于所选类别。我的UIViewController有一个开关,它将根据所选类别调用不同的方法来设置我的UIView。
只是想知道这是否是一个很好的方法,或者我应该考虑创建6个不同的UIViewControllers?
非常感谢与赞成和赞成的讨论。
感谢。
它们基本相同。
示例代码:
switch (self.category) {
case vegetables:
recipe = [[[WebServices sharedInstance].recipeDictionary objectForKey:self.chosenCategory] objectAtIndex:4]; //Needs to be made random
descriptionText.text = recipe.recipeDescription;
[self setupText];
[self setupVegetablesView];
break;
case dairy:
recipe = [[[WebServices sharedInstance].recipeDictionary objectForKey:self.chosenCategory] objectAtIndex:4]; //Needs to be made random
descriptionText.text = recipe.recipeDescription;
[self setupText];
[self setupDairyProductsView];
break;
- (void)setupVegetablesView
{
descriptionText.textColor = [UIColor colorWithRed:0/255.0 green:103/255.0 blue:55/255.0 alpha:1];
background.image = imageBackgroundVegetables;
topBar.image = topBarForVegetables;
subtitle.image = subtitleImageVegetables;
subtitleLink.image = subtitleLinkBarVegetables;
...
}
答案 0 :(得分:1)
取决于你的情况。如果视图控制器相似,那么这是有道理的。但如果它们彼此完全不同,请使用单独的子类。
答案 1 :(得分:1)
我会按照以下方式实现它
•我会为我需要的UIView类型提供几个UIView派生类
例如,我会VegatableView
和DiaryView
•这些视图中的每一个都具有相同的基类,例如MyBaseView
•MyBaseView将有一个名为setup
的函数,这个函数需要在我的每个派生类中实现(蔬菜和日记)
•根据您的枚举,我将创建其中一个具体类并调用设置函数
示例:
switch (self.category) {
MyBaseView recipe;
case vegetables:
//Create an instance of VegetableView
recipe = [[VegetableView alloc] init];
break;
case dairy:
//Create an instance of DiaryView
recipe = [[VegetableView alloc] init];
break;
}
//Call setup for the created view
[recipe setup];
//Setup function in vegetableView.m
- (void)setup
{
//Do some vegetable setup stuff
}
//Setup function in diaryView.m
- (void)setup
{
//Do some diary setup stuff
}
通过这种方式,我会最小化不同的代码,我会使两个视图类型的参数相等 另外,添加新视图将非常简单,只需子类MyBaseView并实现专门用于新视图的设置功能 因此增加了对象解耦和降低复杂性