Jestem przekonany, że możliwe jest przekazanie klasy jako parametru metody, ale mam problemy z jej implementacją. Teraz mam coś takiego:Przekaż klasę jako parametr?
- (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;
}
i nazywam go tak:
rootNavController = [ self navControllerFromView:RootViewController
title:@"Contact"
imageName:@"my_info.png"
];
Co jest nie tak z tym zdjęciem?
widzę teraz - wszystko, co mówi ma sens - i to działa, jeśli mogę użyć „id viewController = [[viewControllerClass alloc] startowych] ; " - ale dostaję błąd "viewController undeclaired" jeśli spróbuję "viewControllerClass * viewController = [[viewControllerClass alloc] init];" Każdy pomysł, dlaczego? Czy nie mogę użyć takiego parametru klasy? – JoBu1324
Prawidłowo. Potrzebujesz imienia klasy. Pamiętaj, że czas kompilacji i czas pracy to oddzielne rzeczy; obiekt w zmiennej viewControllerClass jest nieznany do czasu wykonywania, więc nie można go użyć do statycznego zadeklarowania zmiennej obiektu w czasie kompilacji. Musisz użyć "id viewController". –