Загрузить NIB из переменной - PullRequest
0 голосов
/ 24 марта 2011

Я пытаюсь загрузить 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 ]

1 голос
/ 24 марта 2011

Вы не можете создать экземпляр "UIViewController" с произвольными NIB, вы должны создать экземпляр "[независимо от того, какой у вас пользовательский класс контроллера представления]" с NIB для этого класса.

Это сбой, потому что он пытается получить доступ к свойствам, которые не существуют в UIViewController.

Если вы хотите выполнить такой вид динамической загрузки контроллера представления, вам нужно проделать немного больше работы и использовать специальный метод класса Class, который позволяет вам создавать экземпляр объекта, используя строку для имени класса, а не hard -coded.

Что-то вроде:

Class viewControllerClass = NSClassFromString( nibVar );
UIViewController* aController = (UIViewController*) [[viewControllerClass alloc] initWithNibName:nibVar bundle:nil];
0 голосов
/ 24 марта 2011

Убедитесь, что имя NIB правильное и не включает расширение xib. Он также чувствителен к регистру.

...