Pass a class as a parameter?
cocoa, iphone, objective-c
Solution
- (id)navControllerFromView:(Class)viewControllerClass
It's just `Class`, without the asterisk. (`Class` isn't a class name; you're not passing a pointer to an instance of the `Class` class, you're passing the class itself.)
rootNavController = [ self navControllerFromView:RootViewController
You can't pass a bare class name around like this—you have to send it a message. If you actually want to pass the class somewhere, you need to send it the `class` message. Thus:
rootNavController = [self navControllerFromView:[RootViewController class]
title:@"Contact"
imageName:@"my_info.png"
];
Problem
I have been lead to believe that it is possible to pass a class as a method parameter, but I'm having trouble implementing the concept. Right now I have something like: ``` - (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; } ``` and I call it like this: ``` rootNavController = [ self navControllerFromView:RootViewController title:@"Contact" imageName:@"my_info.png" ]; ``` What's wrong with this picture?