2012-06-27 6 views
0

Я пытаюсь настроить проект, который динамически создает ViewControllers, основанный на файле JSON. Я задал вопрос на днях о том, как создать это здесьxCode передавать данные между динамически создаваемыми ViewControllers

xCode Dynamically create ViewControllers

Так что я был в состоянии создать ViewControllers динамически и после того, как играл с ним больше, я был довольно легко настроить его так, когда приложение загружается, оно генерирует, как много количество ViewControllers указано в JSON. Я также могу легко перемещаться между ними, а также каждый экран настраивал кнопки, виды и т. Д. Из JSON. Я делаю это просто, делая

NSDictionary *MainJSON = [sJson JSONValue]; 
NSArray *theArray = [MainJSON valueForKey:@"viewControllers"]; 

Затем пройдите через массив, создающий экземпляр ViewController.

Моя проблема заключается в том, что я хочу иметь возможность передавать данные между ViewControllers. Скажем, например, я установил его в JSON, поэтому первый ViewController имеет текстовое поле. Пользователь вводит некоторые данные, и я хочу, чтобы их можно было настроить, поэтому, когда они переходят к следующему экрану, эти данные переносятся на следующий экран. Я в настоящее время переключения экранов, как этот

-(void)nextScreen 
{ 
    for(int i = 0; i < [vcArray count]; i++) 
    { 
     int iID = i+1; 
     if([self.navigationController.viewControllers count] == iID) 
     { 
      ViewController *theVC = [vcArray objectAtIndex:i]; 

      [self.navigationController pushViewController:theVC animated:YES]; 
      break; 
     } 
    } 
} 

Теперь обычно каждый ViewController будет иметь класс, так что в ViewController Я толкаю я могу сделать свойство и синтезировать NSString в этом классе, поэтому при передаче данных к следующему ViewController, Я бы просто сделал это.

vc.theString = textField.text 

Но как я динамически генерировать эти ViewControllers, я не могу сделать это, как я только использую один .h и .m файл и каждый ViewController я генерировать использует один и тот же файл XIB. У кого-нибудь есть идеи о том, как я мог бы передавать данные в этой настройке?

+1

Uhm ... Я не понимаю, факт, что у вас есть только один контроллер View, должно облегчить ситуацию. Вы также можете сохранить в своем приложении iOS все возможные xib и создать экземпляр контроллера представлений с определенным, возможно, добавив свойство строки «xib name» в JSON. Имейте в виду, что UIView (ярлык и т. Д.) Также можно вызвать с номером тега, вы также можете сохранить его в JSON. – Leonardo

+0

Да, играла с ним последние полчаса, и понял, что это можно легко достичь с помощью JSON. В основном я либо использую метод тега, как вы сказали, либо я могу дать каждому ярлыку/текстовому полю в каждом viewController идентификатор, который я могу использовать для их подключения. У меня есть все созданные объекты, хранящиеся в массивах diff, поэтому они могут проверять, какие идентификаторы совпадают, и установить информацию таким образом. Думаю, я должен был поиграть с ним немного больше, прежде чем спрашивать. Слишком рано утром: P – AdamM

+0

Если вы вставляете свой комментарий в качестве ответа, я могу отметить его как принятый! – AdamM

ответ

1

Если ваша проблема в том, что вам нужен другой xib для одного контроллера вида, вы можете предоставить их все в основном приложении iOS, а затем, отправив xib-имя в JSON, вы можете создать экземпляр этого xib и назначить контроллеру.

Если вам также нужно вызвать объекты UIView, которые вы не знаете по имени, вы всегда можете использовать атрибут тега, хранящийся в JSON. Возможно, вы также можете сохранить тип UIView, такой как «UILabel», «UITextView», ecc ... и вызвать соответствующий параметр для значения.

0

Выяснил это. Если я дам каждому виду тег из JSON, вы можете легко связать нужные мне объекты.