Синхронизируйте UITableViewCell с основными данными - PullRequest
1 голос
/ 30 марта 2011

У меня есть несколько объектов, хранящихся в Core Data.Например, люди.Я синхронизирую этих людей с моим веб-сервисом (XML) и использую NSFetchedResultsController для отображения людей в UITableView.

Все работает нормально, и мои методы синхронизации работают в фоновом потоке (методы синхронизации вызываются только один раз в viewDidLoad).

Теперь я хотел бы показать UISwitch в UITableViewCell.Этот переключатель должен изменить значение bool в объекте person.Кроме того, мне нужно отобразить небольшую панель инструментов с некоторыми значками.Если человек x, тогда покажите значок «y», если «человек» - значок «b» ...

Есть ли у кого-нибудь хорошие идеи или примеры для реализации этого?

Мой первый подход: создание подклассов иустановка объекта Core Data с методом + UISwitch в качестве подпредставления в viewview ... Мне также нужно реализовать метод layoutSubviews.

Я не хотел бы создавать файл .nib!Мне нужно повторно использовать все части клетки в других клетках ...

Но я не уверен, что это лучший способ ...

1 Ответ

0 голосов
/ 06 мая 2011

Привет Я был вне этого пути. Полученный контроллер результата должен сделать эту работу за вас. Просто подключите состояние ядра BOOL к uiswitch и сделайте что-то вроде:

- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath {

    UITableView *tableView = self.tableView;
    [tableView beginUpdates];


    switch(type) {
        case NSFetchedResultsChangeInsert:
        {
            NSIndexPath *newIndex = [NSIndexPath indexPathForRow:newIndexPath.row inSection:2];

            [tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndex] withRowAnimation:UITableViewRowAnimationFade];
            break;
        }
        case NSFetchedResultsChangeDelete:
        {
            NSIndexPath *newIndex = [NSIndexPath indexPathForRow:indexPath.row inSection:2];

            [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:newIndex] withRowAnimation:UITableViewRowAnimationFade];
            break;
        }
        case NSFetchedResultsChangeUpdate:
        {
            NSIndexPath *newIndex = [NSIndexPath indexPathForRow:indexPath.row inSection:2];

            [self configureCell:(CompanyAndUserInfoCell *)[tableView cellForRowAtIndexPath:newIndex] atIndexPath:newIndex forTableView:tableView];
            break;
        }
        case NSFetchedResultsChangeMove:
        {
            NSIndexPath *newIndexStart = [NSIndexPath indexPathForRow:indexPath.row inSection:2];
            NSIndexPath *newIndexStop = [NSIndexPath indexPathForRow:newIndexPath.row inSection:2];

            [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:newIndexStart] withRowAnimation:UITableViewRowAnimationFade];
            [tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexStop] withRowAnimation:UITableViewRowAnimationFade];
            break;
        }
    }
    [tableView endUpdates];


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