Сохранение и загрузка состояния просмотра таблицы - PullRequest
0 голосов
/ 10 августа 2011

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

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

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

Подробнее (за михир-мехту) :

// Set core data values
    int sec = 0;
    int row = 0;
    for (NSArray *section in groupsArray) {
        for (People *person in section) {
            [person setSubgroupSection:[NSNumber numberWithInt:sec]];
            [person setSubgroupRow:[NSNumber numberWithInt:row]];
            row++;
        }
        sec++;
        row = 0; // new section so restart the row count
    }

Ответы [ 3 ]

2 голосов
/ 10 августа 2011

Если вы уже знакомы с CoreData, возможно, вам следует придерживаться плана, который вы описали.Как я вижу, вы должны сделать что-то вроде TableViewInfoManagedObject:NSManagedObject.У этого TableViewInfoManagedObject должны быть такие члены, как @dynamic numberOfSections, например, описывающие, что вам нужно для работы табличного представления.

Если вы используете CoreData для управления людьми, которые уже рассматривают возможность использования отношений для сопоставления numberOfSections с numberOfGroups или что у вас есть в вашем People:NSManagedObject.

Также вам нужно учитывать, когда нужно подходящее время для «сохранения» вашего состояния, которое, похоже, полностью определяется ползунком.В этом случае вы можете реализовать IBAction для valueChanged.

РЕДАКТИРОВАТЬ 0: на основе предоставленного вами фрагмента кажется, что в конце цикла вы получите необходимую информацию.Окончательное значение sec должно соответствовать методу делегата UITableViewDataSource -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView, и я не совсем уверен, почему вы устанавливаете номер строки объекта People, если только вы не пытаетесь достичь некоторого порядка сортировки, который долженв любом случае будет достигнуто NSSortDescriptor.Так что tableView:numberOfRowsInSection должен возвращать что-то вроде [[peopleinSection: section] count], а ваш tableView:cellForRowAtIndexPath должен быть настроен так, чтобы он возвращал ячейку вроде cell.textLabel.text = [[[peopleInSection:indexPath.section] objectAtIndex:indexPath.row] getPersonName].Имеет смысл?

1 голос
/ 10 августа 2011

Как насчет создания класса (подкласса NSObject) для каждого объекта, который нужно сохранить, и в этом классе вы можете добавить свойства для каждого объекта. Затем вы можете использовать NSKeyedArchiver / Unarchiver для сохранения и загрузки ваших объектов для повторного использования.

0 голосов
/ 11 августа 2011

Создайте функцию, которая будет принимать строку и раздел в качестве аргумента и возвращает этого конкретного человека путем поиска в массиве .... Понятно?

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