Инициализировать пользовательский класс в соответствии с выбором пользователя - PullRequest
0 голосов
/ 12 октября 2009

У меня есть приложение на основе навигации с двумя уровнями, на втором уровне пользователь выбирает параметр, который должен вызывать инициализацию и загрузку соответствующего файла Nib (для каждого доступного выбора есть файл Nib).

Сейчас я делаю инициализацию в переключателе, основываясь на выборе пользователя. Проблема в том, что я добавляю Nibs по мере разработки, и теперь мне нужно обновлять часть переключателя для каждого добавляемого Nib.

Я хотел бы создать файл * .plist с именами Nib и загрузить Nib в соответствии со значением в файле plist. Мне не удалось создать класс со значением в переменной nsstring.

Вот одна из моих попыток - имя пера nsstring со значением имени пера.

[код]

childController = [[Nibname alloc] initWithNibName: @Nibname bundle: nil];

[/ код]

любая помощь будет оценена

Thx

1 Ответ

0 голосов
/ 24 декабря 2009


Так как мы говорим о том, чтобы толкать контроллеры представлений здесь, вы можете обобщить ваш 'alloc' и использовать nibname для загрузки правильного nib. Как это:

// load info from your plist into a dictionary
    NSString * path= [[NSBundle mainBundle] pathForResource:@"AllNibs" ofType:@"plist"];
    NSDictionary * nibs = [NSDictionary dictionaryWithContentsOfFile:path];

    // use a value to select the right nib name
    NSString *selector = @"viewController1";
    NSString *nibName = [nibs objectForKey:selector];

    // create the view controller from the selected nib name
    UIViewController *aController = [[UIViewController alloc] initWithNibName:nibName bundle:nil];

Даже если вы создали подкласс UIViewController, он все равно будет загружать правильный класс из указанного вами имени пера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...