Как добавить данные текстового поля в ячейки - PullRequest
0 голосов
/ 20 февраля 2012

У меня есть массив, который я сейчас использую для заполнения 2 ячеек текстом. В другом представлении у меня есть текстовое поле, текстовое представление и т. Д. Как я могу переместить ввод данных пользователем в текстовое поле в массив в другом контроллере.

вот что у меня есть:

- (void)viewDidLoad
{
  tabledata = [[NSArray alloc] initWithObjects:@"Franklin", @"delossantos", nil];
  [super viewDidLoad];
}

Вот контроллер представления текстовых полей:

NewEntryController.m

#import "NewEntryViewController.h"

@implementation NewEntryViewController
@synthesize titleTextfield;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
  self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
  if (self) {
    // Custom initialization
  }
  return self;
}

#pragma mark - View lifecycle

- (void)viewDidUnload
{
  [self setTitleTextfield:nil];
  [super viewDidUnload];
  // Release any retained subviews of the main view.
  // e.g. self.myOutlet = nil;
}

@end

1 Ответ

1 голос
/ 20 февраля 2012

Я думаю, есть два варианта:

  1. Разделите ваши данные в другом классе NSObject и сделайте его общей моделью данных для обоих ваших контроллеров представления. Напишите ему, когда пользователь что-то введет.
  2. (Действительно плохой вариант). Оставьте все как есть, убедитесь, что массив первого контроллера общедоступен, и просто получите данные от другого контроллера.

Кроме того, вы объявляете неизменный массив, вы не сможете его изменить. Вам придется либо воссоздать, либо объявить его как изменяемый.

Подробнее о первом варианте

Чтобы создать общую модель, вам нужно создать отдельный класс. Добавьте свойство для хранения данных, например

@property (strong, nonatomic) NSMutableArray *userStrings;

Добавьте @synthesize и инициализируйте его в методе init вашего нового класса.

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

@property (strong, nonatomic) NSObject *dataModel;

После того, как вы назначите его, вы сможете получить к нему доступ из ваших контроллеров представления. Там, когда ваш пользователь что-то вводит, вам нужно будет обновить содержимое вашего dataModel, добавляя, изменяя или удаляя элементы в массиве модели. Это будет сделано аналогичным образом:

[self.dataModel setUserStrings:[NSMutableArray arrayWithObjects: [self.textField text], [self.textView text], nil]];
// or
[[self.dataModel userStrings] addObject:[self.textField text]];

Таким образом, вы можете иметь общий источник данных.

Возможно более простое решение

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

В этом случае вам не нужно создавать и совместно использовать модель, вы можете просто создать массив на основе пользовательского ввода и передать его во второй контроллер. Вы должны создать этот второй контроллер и установить его свойство tableData. Когда появится ваш следующий контроллер, он просто прочитает это свойство и покажет данные.


Если вам нужна дополнительная информация о таких подходах, я бы посоветовал вам посмотреть несколько видеоуроков по использованию подхода MVC в Objective-C. Например, курс Стэнфорда по программированию на iOS - это круто. Он доступен бесплатно в iTunes U.

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