所以我想要一个可以为每个单元处理不同视图控制器的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开发的新手,所以我只知道一点。
提前致谢!
答案 0 :(得分:4)
我认为您可以使用工厂方法返回UIViewController
的对象,因为它是pushViewController
的参数类型(正如您在UINavigationController的API文档中看到的那样)。基本上你创建了一个方法,期望int,String,Enum告诉你想要创建什么样的DetailView,然后它创建给定DetailView实现的对象并返回它。然后,您可以使用pushViewController
推送新控制器。