2013-08-28 2 views
0

Я пытаюсь передать текстовый текст с одного контроллера на другой контроллер, чтобы я мог отправить его по электронной почте. Я следую примеру, но я должен упустить некоторые детали. В основном цель состоит в том, чтобы передать текст текстового поля данных от контроллера enteryournamontroller до nsstring контроллера опциона. Строковая переменная nsstring возвращается null.Почему мои данные не передаются через контроллеры просмотра?

EnterYourNameController.h

@interface EnterYourNameController : UIViewController{ 

    UITextField *textField; 

    id <EnterYourNameController> delegate; 
} 
    @property (strong, nonatomic) NSString *stringEntered; 
    @property (strong, nonatomic) UITextField *textField; 
    @property (strong, nonatomic) id delegate; 

EnterYourNameController.m

 -(void)button{ 
     stringEntered=textField.text; 

     ((Options *) (self.delegate)).string = stringEntered; 

      UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
Options *vc = [storyboard instantiateViewControllerWithIdentifier:@"Options"]; 
    [self.navigationController pushViewController:vc animated:YES]; 

     } 

options.h

@interface Options : UIViewController <MFMailComposeViewControllerDelegate> { 

    NSString *string; 
    } 
    @property (strong,nonatomic) NSString* string; 

    @end 

option.m

 NSString *emailBody = [NSString stringWithFormat:@"%@",string]; 
+0

Где вы звоните Контроллер параметров? – iOS

+2

Как работает эта линия? ((Опции *) (self.delegate)). String = stringEntered; –

+0

Я вызываю контроллер опций в методе кнопок. Я не показывал его, потому что я хочу немного почистить его. –

ответ

1

В методе -(void) button инициализируйте контроллер Options и установите значение.

-(void)button{ 

     stringEntered=textField.text; 
     Options *optViewController = [[Options alloc] init]; 
     optViewController.string = stringEntered; 
     //call your optViewController here 
    } 
+0

По-прежнему не работает по какой-то нечетной причине. Я сделал NSLog, чтобы убедиться, что stringEntered работает правильно, и он работает. –

+0

Возможно, это путь Im, перемещающийся между контроллерами. UIStoryboard * раскадровка = [UIStoryboard раскадровкаWithName: @ «MainStoryboard» bundle: nil]; Опции * vc = [раскадровка instantiateViewControllerWithIdentifier: @ "Options"]; [self.navigationController pushViewController: vc animated: YES]; –

+0

Попробуйте использовать [self.navigationController pushViewController: optViewController animated: YES]; в последней строке метода. – iOS

0

Надеюсь, ваша строка в опции VC не будет жить, когда вы переключаетесь между видами. Таким образом, вы должны сохранить свойство строки следующим образом:

-(void)button 
{ 
    Options *optViewController = [[Options alloc] init]; 
    optViewController.string = [[NSString stringWithString:textField.text] retain]; 
    //call your optViewController here 
} 
Смежные вопросы