Сохранить данные с 1 страницы и добавить эти данные в табличное представление - PullRequest
0 голосов
/ 14 июля 2011

Эй, ребята, у меня есть 2 просмотра, первый имеет UITableView. Второй имеет textField, и когда пользователь нажимает кнопку «Сохранить» на второй странице, я хочу, чтобы текст textFields был добавлен в tableView. Вот код, который я использую

- (IBAction)saveButton:(id)sender {
CheckListPracticeViewController * obj = [[CheckListPracticeViewController alloc]init];
[obj.cells insertObject:textField.text atIndex:0];
[self dismissModalViewControllerAnimated:YES];
NSLog(@"%@ "[cells objectAtIndex:0]);
[obj.myTableView reloadData];}

По какой-то причине данные не добавляются в табличное представление. Кто-нибудь знает, что не так? Также NSLog не работает в этом методе. Большое спасибо, ребята: D

Ответы [ 4 ]

2 голосов
/ 15 июля 2011

Это потому, что вы создаете новый экземпляр CheckListPracticeViewController и обновляете его, а не текущий, который представил этот контроллер представления модально.

Изменить первую строку на,

CheckListPracticeViewController * obj = (CheckListPracticeViewController *)self.parentViewController;

EDIT

Прежде всего, следуйте вашей модели данных. Если вы загружаете массив словарей из plist и позже добавляете строки в этот массив, то у вас есть серьезные проблемы. Я предложу вам создать объект словаря с именем и другим материалом и добавить его в массив. Я бы сказал, что [obj.cells insertObject:[NSDictionary dictionaryWithObject:textField.text forKey:@"name"] atIndex:0]; вместо [obj.cells insertObject:textField.text atIndex:0]; исправит эту текущую ошибку, но я сомневаюсь, что это решит вашу проблему.

0 голосов
/ 14 июля 2011

Вы создаете еще один экземпляр CheckListPracticeViewController. Я предполагаю, что там, где твой стол. Если вы возвращаетесь к CheckListPracticeViewController (я полагаю, вы делаете это, поскольку вы используете [self dismissModalViewControllerAnimated:YES]), вам придется передать свой контроллер вида как week reference или использовать NSNotification или NSUserDefaults для хранения и извлечения этого объекта. в CheckListPracticeViewController.

EDIT

Передайте CheckListPracticeViewController по слабой ссылке на представление, которое имеет UITextField.

пример:

в .h вашего UITextField класса создайте ссылку на контроллер.

@property(nonatomi,assign)CheckListPracticeViewController *controller;

затем при создании нового класса контроллера UITextField передайте ссылку на его создателя через controller экземпляр.

// в файле CheckListPracticeViewController.m

myEdiotr.controller = self;

Позже используйте экземпляр контроллера для сохранения текста из UITextField.

- (IBAction)saveButton:(id)sender {
  [controller.cells insertObject:textField.text atIndex:0];
  [controller.myTableView reloadData];
  [self dismissModalViewControllerAnimated:YES];
}
0 голосов
/ 14 июля 2011

Это определенно один из них.

  1. Проверить, выделен ли массив cells. Скорее всего, это не . Вот почему он не добавляется в tableView. Вы можете добавить его в метод init, чтобы инициализировать массив перед добавлением в массив.

  2. Попробуйте NSlogging содержимое массива в различных точках. Это даст вам знать, если это именно то, что происходит. NSLog массив в IBAction метода Add, viewWillAppear

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

  4. NSLog содержимое textField.text перед добавлением его в массив. Я предполагаю, что это не свойство, а просто ноль.

  5. Убедитесь, что вы указали self.myTableView = tableView в конце вашего cellForRowAtIndexPath

0 голосов
/ 14 июля 2011

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

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