Iphone 动态选择不同的视图控制器
我有一个问题,我认为可能是直截了当的,但我似乎无法集中注意力 我有一个从一系列字典加载的tableview。每个字典都有一个标题(显示在该行中)和一个关联的nssstring,表示当选择该行时应推送到堆栈上的viewcontroller。换句话说,选择行“A”需要初始化“aViewController”的实例并将其推送到堆栈上,选择行“B”需要初始化“bViewController”的实例并将其推送到堆栈上,等等 我最初只是将所有可能的值硬编码到didSelectRow中。但是我真的希望能够动态地生成viewController。我发现了几个类似的问题的C++例子,这些代码引导我进入下面的代码。但我似乎无法正确地使用objective-c解决方案,也不确定自己是否走上了正确的道路。有人有什么想法吗 以下是不起作用的didSelectRow代码:Iphone 动态选择不同的视图控制器,iphone,objective-c,uiviewcontroller,dynamic-typing,Iphone,Objective C,Uiviewcontroller,Dynamic Typing,我有一个问题,我认为可能是直截了当的,但我似乎无法集中注意力 我有一个从一系列字典加载的tableview。每个字典都有一个标题(显示在该行中)和一个关联的nssstring,表示当选择该行时应推送到堆栈上的viewcontroller。换句话说,选择行“A”需要初始化“aViewController”的实例并将其推送到堆栈上,选择行“B”需要初始化“bViewController”的实例并将其推送到堆栈上,等等 我最初只是将所有可能的值硬编码到didSelectRow中。但是我真的希望能够动态
Class cls = [selectedRow valueForKey:@"viewController"];
if (cls!= nil)
{
id myNewController = [[cls alloc] init];
}
[[self navigationController] pushViewController:myNewController animated:YES];
[myController release];
您是在字典中存储实际类还是类名(作为NSString) 如果您在字典中存储的值是一个NSString,我认为您不能只分配类cls=someNSString 但是,您可以:
NSString *controllerClassName = [selectedRow valueForKey:@"viewController"];
if (controllerClassName != nil) {
id myNewController = [[NSClassFromString(controllerClassName) alloc] init];
[[self navigationController] pushViewController:myNewController animated:YES];
[myNewController release];
}
或
只需将类存储在字典中,而不是NSString表示:“NSClassFromString”。如此明显,如此直观,但当你不知所措时,却很难找到。谢谢你的帮助!