2013-09-26 6 views
0

Я пытаюсь очистить UITableView. Прежде всего, я попытался очистить [self.tableView reloadData]; listOfPosts = nil, но tableView все еще показывает 10 строк. Затем я попытался удалить строку за строкой, но результат был таким же.Не удается удалить строки - UITableView iOS 7

[[NSOperationQueue mainQueue] addOperationWithBlock:^{ 

NSLog(@"Number of sections: %i", [self.tableView numberOfSections]); // => 1 
NSLog(@"Number of rows in section 0: %i", [self.tableView numberOfRowsInSection:0]); // => 10 

[self.tableView beginUpdates]; 
NSMutableArray *rowsToDelete = [[NSMutableArray alloc] init]; 
int nPosts = [self.tableView numberOfRowsInSection:0]; 
for (int i = 0; i < nPosts; i++) { 
    [rowsToDelete addObject:[NSIndexPath indexPathForRow:i inSection:0]]; 
} 
currentPostList = nil; 
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithArray:rowsToDelete] withRowAnimation:UITableViewRowAnimationNone];       
[self.tableView endUpdates]; 
[self.tableView reloadData]; 

NSLog(@"Rows after endUpdates: %i", [self.tableView numberOfRowsInSection:0]); // => 0 
NSLog(@"Visible rows: %i", [[self.tableView visibleCells] count]); // => 0 

// But the tableView still show 10 rows 

}]; 

PD: Я использую UITableViewController так self.tableView генерируется автоматически

(я извиняюсь за мой плохой английский)

+0

Вам не нужно, чтобы * оба * анимировали ваши изменения * и * перезагрузили таблицу. Что произойдет, если вы удалите тот или другой (но не оба)? –

+0

Если я комментирую '[self.tableView reloadData]' Я получаю тот же результат. То же самое с '[self.tableView beginUpdates] ... [self.tableView endUpdates]' – masipcat

+0

Удивительно, может ли это быть связанным с блоком shenanigans с 'currentPostList'. Что, если вы поместите весь код в блок в новый метод (скажем, '-clearTable') и вызовите это из блока (' [self clearTable] ')? –

ответ

0

Вы пытались изменить значение, которое входит в метод:

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

Это то, что изменит количество строк в вашем представлении таблицы. Перезагрузка таблицы ничего не сделает, если ваша модель не изменила значение, указанное в этом методе.

+0

Это мой код: '- (NSInteger) tableView: (UITableView *) tableView numberOfRowsInSection: (NSInteger) раздел { return [currentPostList count]; } ' – masipcat

+0

У вас нет прототипов, которые есть по умолчанию, не так ли? Вы пытались загрузить представление таблицы без каких-либо данных. Чтобы убедиться, что все еще есть эти 10 ячеек, прежде чем вы что-нибудь сделаете? – Jonathan

+0

я делаю что: 1. Получить информацию от сервера 2. Показать, что эта информация в TableView 3. Если пользователь нажмите «чистую кнопку» Я хочу, чтобы очистить ряды 4. Получить Информация о форме сервера – masipcat

Смежные вопросы