Me han hecho creer que es posible pasar una clase como parámetro de método, pero tengo problemas para implementar el concepto. Ahora mismo tengo algo como:¿Pasa una clase como parámetro?
- (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;
}
y yo lo llamo así:
rootNavController = [ self navControllerFromView:RootViewController
title:@"Contact"
imageName:@"my_info.png"
];
¿Qué hay de malo en esta imagen?
Ahora veo - todo lo que dice tiene sentido - y funciona si uso "Identificación viewController = [[viewControllerClass alloc] init] ; " - pero obtengo un error "viewController undeclaired" si intento "viewControllerClass * viewController = [[viewControllerClass alloc] init];" ¿Alguna idea de por qué? ¿O no puedo usar el parámetro de clase así? – JoBu1324
Correcto. Necesitas el nombre de una clase allí. Recuerde, el tiempo de compilación y el tiempo de ejecución son cosas separadas; el objeto en la variable viewControllerClass no se conoce hasta el tiempo de ejecución, por lo que no puede usarlo para declarar estáticamente una variable de objeto en tiempo de compilación. Tienes que usar "id viewController". –