Цель c - удаление строк табличного представления - PullRequest
1 голос
/ 21 октября 2011

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

У меня есть табличное представление с 9 ячейками. В одной из ячеек есть кнопка переключения. Когда значение переключаемой кнопки изменяется, я хочу удалить 2 строки табличного представления. Я написал следующий код:

- (IBAction)switchValueChanged:(id)sender {
NSLog(@"%@", ([switch isOn]) ? @"ON" : @"OFF"); 

NSArray *deleteIndexPaths = [NSArray arrayWithObjects:
                             [NSIndexPath indexPathForRow:1 inSection:0],
                             [NSIndexPath indexPathForRow:2 inSection:0],
                             nil];

UITableView *tableView = (UITableView *)self.view;

[tableView beginUpdates];

[tableView deleteRowsAtIndexPaths:deleteIndexPaths withRowAnimation:UITableViewRowAnimationFade];
// I Have to change the number of rows in the section here.

[tableView endUpdates];
}

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

Как я могу это сделать? Как я могу вызвать метод numberOfRowsInSection:NSInteger и установить также строки?

Большое спасибо:)

Ответы [ 3 ]

2 голосов
/ 21 октября 2011

Количество строк в таблице в вашем

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

Это необходимо для совпадения с новым числом строк в таблице

---- РЕДАКТИРОВАТЬ

Это означает, что вам нужно будет отслеживать количество строк в вашей таблице.

Начните с этого набора 9 и удаляйте 2 каждый раз, когда вы меняете переключатель

- (IBAction)switchValueChanged:(id)sender {
  NSLog(@"%@", ([switch isOn]) ? @"ON" : @"OFF");

  // We are going to delete 2 rows
  numberOfRows -= 2;
  ...

и в вашем numberOfRowsInSection вместо того, чтобы каждый раз возвращать 9, вернуть новое число строк

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return numberOfRows;
}
0 голосов
/ 21 октября 2011

Вы также должны удалить данные из источника данных табличного представления. Источником данных является любой контейнер, который содержит фактические данные, отображаемые в табличном представлении. Простое удаление строки удаляет только визуальный элемент строки, когда таблица перезагружается - она ​​захочет нарисовать 9-2 строки .... но так как число строк все еще возвращает 9, она выдаст исключение несогласованности и сообщит вам Зачем. Смотрите журнал внимательно.

0 голосов
/ 21 октября 2011

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

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