Передача данных с одного контроллера представления на другой контроллер представления через файл xib

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

В этом у меня есть форма. и хочу получить данные от пользователя, и с помощью кнопки отправки я хочу перенаправить это на ThirdViewController и хочу распечатать данные формы на ThirdViewController.

В файле firstViewController.m я написал

-(IBAction)nextVCButton:(id)sender
{

SecondViewController *tempView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

NSLog(@"name : %@",self.nameTextField.text);
tempView.fullName = self.nameTextField.text;
[tempView setFullName:self.fullName];
[self.view addSubview:tempView.view];

}

В файле SecondViewController.m

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.

NSLog(@"received info %@", [self.fullName description]);

self.nameLabel.text = [self.fullName description];

}

В журнале я получаю значение (имя :), но полученная информация в secondViewController равна нулю.

Я делаю все это с помощью файла xib. Без использования раскадровки.

Пожалуйста, помогите мне передать данные этой формы в secondViewController.

Спасибо.


person Zeel    schedule 17.06.2013    source источник
comment
используя addsubview для загрузки второго контроллера представления? серьезно? Тогда почему создается класс UINavigationController?   -  person Lithu T.V    schedule 17.06.2013
comment
stackoverflow.com/questions/5210535/   -  person Solid Soft    schedule 17.06.2013
comment
какой способ более предпочтителен для перехода с одного вида на другой с помощью кнопки и снова с этого контроллера на третий контроллер с помощью кнопки?   -  person Zeel    schedule 17.06.2013


Ответы (3)


Извините, я не мог понять, почему вы сделали этот двухстрочный код:

tempView.fullName = self.nameTextField.text;
[tempView setFullName:self.fullName];

Вместо этого создайте свойство NSString во втором контроллере представления .h file.

@property (nonatomic,retain)    NSString *strFullName;

и синтезировать в .m file.

@synthesize strFullName;

В настоящее время ,

-(IBAction)nextVCButton:(id)sender
{

SecondViewController *tempView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

NSLog(@"name : %@",self.nameTextField.text);
tempView.strFullName = self.nameTextField.text;
[self.view addSubview:tempView.view];
}
person Mansi Panchal    schedule 17.06.2013
comment
Большое вам спасибо .. Я уже сделал то же самое, но из-за этой строки [tempView setFullName:self.fullName]; Я получаю ноль. Теперь, после удаления этого, он работает нормально. Я трачу на это свои 2 дня. спасибо за ваш ценный ответ. - person Zeel; 17.06.2013
comment
Добро пожаловать. Удачного кодирования (: - person Mansi Panchal; 17.06.2013
comment
какой способ более предпочтителен для перехода с одного вида на другой с помощью кнопки и снова с этого контроллера на третий контроллер с помощью кнопки? - person Zeel; 17.06.2013
comment
Это может быть в соответствии с требованиями вашего приложения. - person Mansi Panchal; 18.06.2013
comment
для этого же вопроса я оба раза использую addSubView для перехода на другую страницу. При нажатии кнопки во втором контроллере представления выдается ошибка Thread 1: EXC_BAD_ACCESS (код = 1, адрес = 0x69202020) - person Zeel; 18.06.2013
comment
Но если вы хотите перейти ко второму представлению, вам нужно использовать pushViewController, иначе, если вы хотите добавить это второе представление к первому представлению, вам нужно добавить подпредставление к первому представлению. - person Mansi Panchal; 18.06.2013
comment
давайте продолжим это обсуждение в чате - person Zeel; 18.06.2013

Я думаю, вам нужно использовать Navigation controller, если вы хотите перейти от одного контроллера представления к другому контроллеру представления. ну тут нужно сделать свойство- синтезировать iVar "fullName" в ThirdViewController. и сохраните значение в SecondViewController .

<сильный>1. ThirdViewController.h

 @property(nonatomic, retain) NSString *fullName;

<сильный>2. ThirdViewController.m

@synthisize fullName;
dealloc {
[fullName release];
}

<сильный>3. SecondViewController.m

-(IBAction)nextVCButton:(id)sender
{

SecondViewController *tempView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

NSLog(@"name : %@",self.nameTextField.text);
tempView.fullName = self.nameTextField.text; 
[tempView setFullName:self.fullName];
[self.view addSubview:tempView.view];
}
person kulss    schedule 17.06.2013

попробуйте метод presentViewController вместо addSubview....

-(IBAction)nextVCButton:(id)sender
{
    SecondViewController *tempView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

    NSLog(@"name : %@",self.nameTextField.text);
    tempView.strFullName = self.nameTextField.text;
    [self.view addSubview:tempView.view];
    [self presentViewController:tempView animated:YES completion:nil];
}
person V.J.    schedule 17.06.2013