帮助将我在didSelectRowAtIndexPath中的代码缩短为更容易的代码

|| 嘿,开发人员! 我构建了一个表视图,并用数组对象填充了它,并且当用户单击表视图内的对象时,我实现了一个代码,它加载了该对象自己的nib文件,并且我使用了if语句。 (仅需注意一点,我在Table View中填充了40个对象,因为那是我拥有和需要的东西),所以我将仅显示在if语句代码开头创建的前两个if语句因为我的表格视图中所有40个对象的if语句太多了:
if ([[glossaryArray objectAtIndex:indexPath.row] isEqual:@\"Title\"]) {
    Title *titleLoad = [[Title alloc] initWithNibName:@\"Title\" bundle:nil];
    [self.navigationController pushViewController:titleLoad animated:YES];
    [titleLoad release];
    }
    else if ([[glossaryArray objectAtIndex:indexPath.row] isEqual:@\"Meta Description Tag\"]) {
        MetaDescriptionTag *metaDescriptionTagLoad = [[MetaDescriptionTag alloc] initWithNibName:@\"MetaDescriptionTag\" bundle:nil];
        [self.navigationController pushViewController:metaDescriptionTagLoad animated:YES];
        [metaDescriptionTagLoad release];
    }
...
就是这样,我不想骄傲自大地显示我的所有if语句,所以是的,这段代码行得通,每个数组对象都加载了它自己的单独的nib文件(每个数组对象40个nib文件1 ),每个nib文件都类似于Web视图,图像视图,文本字段和其他对象。叫我疯了,但这是我现在唯一能想到的代码,因此希望有人可以帮助我将此代码编辑为更简单的代码,谢谢     
已邀请:
如果您可以将
glossaryArray
中的值机械地转换为相应的类别/笔尖名称(例如,通过删除所有空格),则可以执行以下操作:
NSString *className = [self classNameFromString:[glossaryArray objectAtIndex:indexPath.row]];
UIViewController *viewController = [[NSClassFromString(className) alloc] initWithNibName:nil bundle:nil];
[self.navigationController pushViewController:viewController animated:YES];
[viewController release];
如果不能对其进行机械转换,则始终可以构造一个NSDictionary映射,从一个映射到另一个映射,或者在特殊情况下,几个不同的映射。或重命名类和笔尖。     

要回复问题请先登录注册