从变量加载NIB

时间:2011-03-24 10:41:19

标签: iphone uiviewcontroller xib 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];

遗憾的是,这不起作用。

这里有什么想法吗?

由于

2 个答案:

答案 0 :(得分:1)

您无法使用任意NIB实例化“UIViewController”,您必须使用该类的NIB实例化“[无论您的自定义视图控制器类是什么]”。

它正在崩溃,因为它试图访问UIViewController中不存在的属性。

如果你想做这种动态的视图控制器加载,你需要做更多的工作,并使用特殊的Class类方法,它允许你使用字符串为类名实例化一个对象,而不是硬-coded。

Sometehing like:

Class viewControllerClass = NSClassFromString( nibVar );
UIViewController* aController = (UIViewController*) [[viewControllerClass alloc] initWithNibName:nibVar bundle:nil];

答案 1 :(得分:0)

确保NIB名称正确且不包含xib扩展名。它也是区分大小写的。