J'ai été amené à croire qu'il est possible de passer une classe comme paramètre de méthode, mais j'ai du mal à implémenter le concept. En ce moment j'ai quelque chose comme:Passer une classe en paramètre?
- (id)navControllerFromView:(Class *)viewControllerClass
title:(NSString *)title
imageName:(NSString *)imageName
{
viewControllerClass *viewController = [[viewControllerClass alloc] init];
UINavigationController *thisNavController =
[[UINavigationController alloc] initWithRootViewController: viewController];
thisNavController.tabBarItem = [[UITabBarItem alloc]
initWithTitle: title
image: [UIImage imageNamed: imageName]
tag: 3];
return thisNavController;
}
et je l'appelle comme ceci:
rootNavController = [ self navControllerFromView:RootViewController
title:@"Contact"
imageName:@"my_info.png"
];
Quel est le problème avec cette image?
Je vois maintenant - tout ce que vous avez dit est logique - et cela fonctionne si je l'utilise « id viewController = [[viewControllerClass alloc] init] " - mais j'obtiens une erreur "viewController undeclaired" si j'essaie "viewControllerClass * viewController = [[viewControllerClass alloc] init];" Une idée pourquoi? Ou est-ce que je ne peux pas utiliser le paramètre de classe comme ça? – JoBu1324
Correct. Vous avez besoin du nom d'une classe là-bas. Rappelez-vous, compiler le temps et le temps d'exécution sont des choses séparées; L'objet de la variable viewControllerClass n'est pas connu avant l'exécution, vous ne pouvez donc pas l'utiliser pour déclarer de façon statique une variable d'objet lors de la compilation. Vous devez utiliser "id viewController". –