Цель C: изменяемый массив обновляется после того, как новый viewController помещается в navigationController - PullRequest
0 голосов
/ 20 апреля 2011

Что я делаю: я реализую контроллер навигации с двумя контроллерами представления, корневым контроллером (отображается при запуске) и контроллером просмотра таблицы.Я создаю NSMutableArray в таблице View Controller для хранения списка контактов, выбранных из адресной книги.

Проблема: Когда я возвращаюсь к корневому контроллеру представления из контроллера представления таблицы, мой NSMutable Array обновляется, поэтому, когда я нажимаю, чтобы снова отобразить мой табличный вид, ничего не отображается.Каков наилучший способ предотвратить это?Я создал свой NSMutable Array как таковой в моем контроллере табличного представления

if (!personArray)
    {
        self.personArray = [[NSMutableArray alloc] init];
    }

Любой совет очень ценится!

Спасибо

Жен

Ответы [ 2 ]

1 голос
/ 20 апреля 2011

Один из способов сделать это - сделать массив person свойством корневого контроллера представления или вашего делегата приложения, чтобы он создавался (возможно, считывался из файла), когда приложение запускалось и продолжало работать, пока приложение не завершится.

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

-(IBAction)showMeTheTable:(id)sender
{
    MyTableViewController *mtvc = [[MyTableViewController alloc] initWithNibName:nil bundle:nil];
    [self.navigationController pushViewController:mtvc animated:YES];
    [mtvc release];
}

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

-(IBAction)showMeTheTable:(id)sender
{
    [self.navigationController pushViewController:self.tableViewController animated:YES];
}
1 голос
/ 20 апреля 2011

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

...