Массив, не обновляя представление таблицы - PullRequest
1 голос
/ 19 января 2010

У меня есть список элементов, а в контроллере модального представления у меня есть то, что фактически является экраном «Новый элемент», где пользователь может ввести новую вещь для списка.

Список представляет собой UITableView с источником данных NSMutableArray.

вот код на MVC

- (IBAction) сделано {

[RoutineTitle resignFirstResponder];
[RoutineInvolvment resignFirstResponder];

NSString *myString = RoutineTitle.text;
FirstViewController *FirstView = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];

NSLog(@"Log the String: %@", myString);

[FirstView.routines addObject:myString];

[self dismissModalViewControllerAnimated: YES];

}

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

Любая помощь будет оценена. Спасибо

Sam

Ответы [ 3 ]

1 голос
/ 19 января 2010

Вы должны использовать reloadData на вашем `UITableView

т.е.

[myTableView reloadData];
0 голосов
/ 19 января 2010

Ваш код не имеет никакого смысла. Вы вызываете -presentModalViewController в вашем FirstViewController? Почему вы создаете новый FirstViewController в своем методе -done?

Что вам нужно сделать, когда вы представляете свой контроллер представления «новый элемент», это передать ему ссылку на ваше представление таблицы и контейнер данных. Примерно так:

NewItemViewController *controller = [[NewItemViewController alloc] init];
[controller setTableView:firstViewTableView];
[controller setDataContainer:routines];
[self presentModalViewController:controller];
[controller release];

Затем в действии -done: вашего нового контроллера представления элементов вы можете добавить строку в контейнер данных (NSMutableArray) и затем перезагрузить представление таблицы следующим образом:

- (IBAction)done:(id)sender;
{
    NSString *myString = RoutineTitle.text;
    [dataContainer addObject:myString];
    [tableView reloadData];

    [self dismissModalViewController];
}

Вашему NewItemViewController потребуются два @ syntheisze'd ивара, как это:

@property (nonatomic, retain) UITableView *tableView;
@property (nonatomic, retain) NSMutableArray *dataContainer;

Дайте мне знать, если вам нужны разъяснения.

0 голосов
/ 19 января 2010

В вашем методе -viewWillAppear:(BOOL)animated после вызова super вы также должны вызвать [self.tableView reloadData];

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