Что такое SimpleEditableListAppDelegate? - PullRequest
1 голос
/ 11 марта 2010

Я пытаюсь следовать руководству по программированию TableView, и я копирую код непосредственно из руководства, но я получаю "SimpleEditableListAppDelegate undeclared", когда пытаюсь скомпилировать. Google не возвращает ничего, кроме руководства по программированию. Что такое SimpleEditableListAppDelegate и как его использовать?

Ответы [ 2 ]

4 голосов
/ 11 марта 2010

SimpleEditableListAppDelegate является делегатом заявки. Это класс, который автоматически создается при создании нового проекта XCode. Причина, по которой ваш код не компилируется, заключается в том, что класс SimpleEditableListAppDelegate не существует в вашем проекте, потому что ваш проект назван не так, как в руководстве по программированию табличного представления. Ошибка «SimpleEditableListAppDelegate undeclared» возникает потому, что где-то в коде есть ссылка на этот класс, который не существует.

Вы должны быть в состоянии увидеть имя вашего класса делегата приложения на боковой панели файлов в XCode, так что просто где бы вы ни увидели SimpleEditableListAppDelegate, замените его своим реальным именем класса делегата. Либо так, либо замените все экземпляры SimpleEditableListAppDelegate на [[UIApplication sharedApplication] delegate].

Звучит так, как будто вам нужно сначала понять основы программирования на iPhone, поэтому вы можете взглянуть на this .

3 голосов
/ 12 июня 2010

Я думаю, можно с уверенностью сказать, что мы все смотрим на этот источник от Apple ...

- (void)tableView:(UITableView *)tv commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    // If row is deleted, remove it from the list.
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        SimpleEditableListAppDelegate *controller = (SimpleEditableListAppDelegate *)[[UIApplication sharedApplication] delegate];
        [controller removeObjectFromListAtIndex:indexPath.row];
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }
}

SimpleEditableListAppDelegate - это просто имя их примера класса. В ВАШЕМ коде вы просто хотите использовать имя делегата для вашего табличного представления (т.е. MyAppDelegate) или просто использовать "[self removeObjectFromListAtIndex];" вместо того, чтобы создавать контроллер работал нормально для меня.

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

Вот как это работает для меня ...

 if (editingStyle == UITableViewCellEditingStyleDelete) {
  // Update Model
  NSMutableArray *work_array = [NSMutableArray arrayWithArray:self.city_table];
  [work_array removeObjectAtIndex:indexPath.row];
  self.city_table = [NSArray arrayWithArray:work_array];
  [[NSUserDefaults standardUserDefaults] setObject:self.city_table forKey:KEY_CITY_TABLE];

  // Update View
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
  }

Надеюсь, это поможет ... Z @ K!

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