从变量加载NIB
问题描述:
我想加载一个基于我从我的设置文件中获得的变量的NIB。这是代码:从变量加载NIB
//select the right nib name
NSString *nibVar = [nibs objectForKey:@"controller"];
// create the view controller from the selected nib name
UIViewController *aController = [[UIViewController alloc] initWithNibName:nibVar bundle:nil];
aController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:aController animated:YES];
[aController release];
这不幸的是不起作用。
这里的任何想法?
感谢
答
你不能用任意NIB实例化“UIViewController”,你必须用该类的NIB实例化“[无论你的自定义视图控制器类是什么”)。
它崩溃,因为它试图访问UIViewController中不存在的属性。
如果你想做这种动态的视图控制器加载,你需要做更多的工作,并且使用特殊的Class类方法,它允许你使用类名的字符串来实例化一个对象,而不是硬编码。
Sometehing像:
Class viewControllerClass = NSClassFromString(nibVar);
UIViewController* aController = (UIViewController*) [[viewControllerClass alloc] initWithNibName:nibVar bundle:nil];
+0
检查。很高兴知道!感谢您的帮助! – Ron 2011-03-24 12:33:24
什么不起作用?控制台是否显示错误?什么都没有发生? – 2011-03-24 10:44:03
它给出了这个错误:***终止应用程序,由于未捕获异常'NSUnknownKeyException',原因:'[ setValue:forUndefinedKey:]:该类不是密钥值编码兼容的密钥滚动。 –
Ron
2011-03-24 10:58:27