从变量加载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]; 

这不幸的是不起作用。

这里的任何想法?

感谢

+0

什么不起作用?控制台是否显示错误?什么都没有发生? – 2011-03-24 10:44:03

+0

它给出了这个错误:***终止应用程序,由于未捕获异常'NSUnknownKeyException',原因:'[ setValue:forUndefinedKey:]:该类不是密钥值编码兼容的密钥滚动。 – Ron 2011-03-24 10:58:27

你不能用任意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

确保NIB的名字是正确的,不包括厦门国际银行扩展。它也是区分大小写的。

+0

NIB被正确命名。如果我把plist的名字粘贴到代码中,那么所有的东西都像魅力一样! – Ron 2011-03-24 10:59:14

+0

设置UIViewController时出错了。如果我用我的类名'settingsViewController'替换它们,并且保留initWithNibName:nibVar不变,那么它就可以工作。 – Ron 2011-03-24 11:04:00