Как перенести текст из одного поля UIText в другое поле UIText в следующем представлении? И назад? - PullRequest
0 голосов
/ 25 мая 2010

привет,

У меня UITextField в одном представлении, UITextField A в представлении A. И у меня есть еще один вид B, UITextField B вид View B.

Я использую панель контроллера навигации для переключения между видами. UITextFields - это свойства и связанные выходы обоих представлений A и B.

На моем виде A есть кнопка «Опции», которая перемещает вид B. Поэтому, когда вы печатаете в текстовом поле A, я бы хотел, чтобы тот же текст появлялся в текстовом поле B.

Когда вы редактируете TextField B и возвращаетесь к представлению A (с помощью кнопки «Вид заголовка A» на панели навигации), я бы хотел, чтобы тот же текст снова появлялся в текстовом поле A.

Я ожидал, что это будет легко. Но я не могу заставить его работать.

Я пытался:

ViewBController *controller = [[ViewBController alloc] initWithNibName:@"ViewBController" bundle:nil];
controller.TextFieldA.text = TextFieldB.text

Но ничего не появилось в поле зрения Б. И как мне вернуться? Я не хочу использовать NSUserdefaults, потому что мне придется также удалить значения.

Ответы [ 3 ]

0 голосов
/ 25 мая 2010

Think Model View Controller (MVC) ... NSUserDefaults может быть местом для хранения вашей модели, как и NSString

Предположим, вы идете с NSString. Создайте его в A и сделайте его свойством B, обновите вашу модель (строку) в каждом представлении в viewWillDisappear. Обновите вид из модели в ViewWilAppear. Работа выполнена.

EDIT: Обновить свойство B

MyVC * b = [[MyVC alloc] init]; b.myProperty = theReallyImportantValueString;

Затем отобразите b с помощью push или displayModalViewController

0 голосов
/ 26 мая 2010

Благодаря Andii я наконец нашел его.

Прежде всего, вы не можете переместить свойства UITextFields в другое представление. Я должен был сделать отдельную строку NSString, которая могла быть нажата. Как это

    BViewController *bViewController = [[BViewController alloc] initWithNibName:@"BViewController" bundle:nil];
    bViewController.aString = self.aTextField.text;

В представлении WillAppear of B я поставил:

bTextField.text = aString;

Затем я хотел отодвинуть bTextField.text в представление A. Мне пришлось сделать вид, который исчезнет, ​​как это (вы также можете написать его короче):

- (void) viewWillDisappear:(BOOL)animated  {
NSArray *viewControllerArray = [self.navigationController viewControllers]; 
int parentViewControllerIndex = [viewControllerArray count] - 1;

[[viewControllerArray objectAtIndex:parentViewControllerIndex] setBString:bTextField.text];

 [super viewWillDisappear:animated];

}

Наконец мне пришлось добавить это в viewWillAppear of A:

    if ([self.bString length] > 0) {
    aTextField.text = self.bString;
}
0 голосов
/ 25 мая 2010

Проблема здесь может заключаться в том, что когда вы пытаетесь установить textfieldAs text, очень возможно, что textFieldA еще не был создан ... вы должны проверить, что он имеет ... но я бы не стал подключать textFieldA через IB, потому что с Ваш метод здесь, когда ваш вид появляется, он может повторно инициализировать свои выходы и очистить текст, я бы, вероятно, программно установил текстовое поле ... надеюсь, это поможет

...