2011-07-31 8 views
4

各セルの異なるビューコントローラを扱うことができるRootViewControllerが必要です(ここでは、nibsを再利用しない理由があります)。ナビゲーションベースのプロジェクト用の複数のディテールビューコントローラの良いアプローチ

私はこのような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開発には新しく、ちょっとだけ分かっています。

ありがとうございます!

答えて

4

UIViewControllerというオブジェクトを返すファクトリメソッドを使用することができます(UINavigationControllerのAPIドキュメントに表示されているように)引数型はpushViewControllerです。基本的には、作成するDetailViewの種類を示すint、String、Enumが必要なメソッドを作成し、指定されたDetailView実装のオブジェクトを作成して返します。その後、pushViewControllerを使用して新しいコントローラをプッシュできます。

関連する問題