基于导航的项目的多详细视图控制器的好方法

时间:2011-07-31 13:59:04

标签: iphone objective-c ios

所以我想要一个可以为每个单元处理不同视图控制器的RootViewController(好吧,我有理由不在这里重用nib)。

我可以在didSelectRowAtIndexPath中列出所有内容,如下所示:

if(condition){
   DetailViewController *dvController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" 
                                                                                    bundle:[NSBundle mainBundle]];
        dvController.selectedCountry = selectedCountry;
        [self.navigationController pushViewController:dvController animated:YES];

        [dvController release];
}

else if (condition2){        
        DetailViewController2 *dvController2 = [[DetailViewController2 alloc] initWithNibName:@"DetailViewController2" 
                                                                                    bundle:[NSBundle mainBundle]];
        dvController2.selectedCountry = selectedCountry;
        [self.navigationController pushViewController:dvController2 animated:YES];

        [dvController2 release];
        dvController2 = nil;
}

但这可能会很长,我不知道其他任何方法。我可以使用某种“特殊控制器”或类来解决这个问题吗?我是iOS开发的新手,所以我只知道一点。

提前致谢!

1 个答案:

答案 0 :(得分:4)

我认为您可以使用工厂方法返回UIViewController的对象,因为它是pushViewController的参数类型(正如您在UINavigationController的API文档中看到的那样)。基本上你创建了一个方法,期望int,String,Enum告诉你想要创建什么样的DetailView,然后它创建给定DetailView实现的对象并返回它。然后,您可以使用pushViewController推送新控制器。