У меня есть обычный UITableView
с пользовательской ячейкой с UISearchBar
и я могу использовать searchBar: textDidChange метод фильтрации строк. Но то, что я хочу добавить в мой проект, - это возможность удалять отфильтрованные строки, которые эти строки будут удалены из оригинала DataSourseArray
Как это реализовать?Как удалить строки из UITableView с помощью UISearchBar?
ответ
Если у вас есть панель поиска, вам придется фильтровать данные, если фильтр пуст или нет. Иты удобно держать отфильтрованные данные и полную коллекцию separetly:
@property (strong, nonatomic) NSMutableArray* allTableData;
@property (strong, nonatomic) NSMutableArray* filteredTableData;
В зависимости, если фильтр оп ределяется вам нужно будет возвращать diffrend подсчет клеток
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection: (NSInteger)section
{
int rowCount;
if(self.isFiltered)
rowCount = filteredTableData.count;
else
rowCount = allTableData.count;
return rowCount;
}
И то же самое с возвратом ячейки. Если есть фильтр - вы должны использовать индекс Светланы отфильтрованных данных
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
Food* food;
if(isFiltered)
food = [filteredTableData objectAtIndex:indexPath.row];
else
food = [allTableData objectAtIndex:indexPath.row];
// ... Set up the cell here...;
return cell;
}
Here is tutorial на фильтрацию UITableView
, что вы можете сделать, это [aryAll removeObjectsInArray:aryFilter];
, чтобы удалить все и рассказать tableView
к reloadData
.
Или удалить сингл добавить
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if(editingStyle == UITableViewCellEditingStyleDelete)
{
NSObject *obj = [aryFilter objectAtIndex:indexPath.row];
[aryFilter removeObject:obj];
[aryAll removeObject:obj];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
, например;)
Не пробовал в моем коде, но что-то вроде этого вам нужно будет :)
Огромное спасибо :) – Egor
надеюсь, что это работает, как будто это должно быть :) если да, пожалуйста, установите ответ как принято. если нет, сообщите, где у вас все еще есть проблемы, и я увижу, как вам можно помочь;) – geo
да-это работает, как я ожидал:), но как я могу задать ответ как принятый? – Egor
С чего вы сказал, что вы используете 2 разных массива. Один для полных данных и один для фильтрованных данных. Используйте один массив, и это может быть легко достигнуто.
Другими словами. Когда вы фильтруете, добавьте obj ects в отфильтрованный массив, а затем удалить все объекты из массива данных и добавить из фильтрованного массива и отобразить его с помощью reloaddata.
- 1. Как скрыть или удалить UISearchBar из UITableView
- 2. Как удалить строку в UITableView с помощью UISearchBar
- 3. Как удалить строки из UITableView?
- 4. UISearchBar как подзадача UITableView
- 5. Удалить строки из UITableView
- 6. UISearchBar как заголовок UITableView
- 7. UISearchBar в UITableView с .plist
- 8. UITableView не будет прокручиваться с помощью UISearchBar
- 9. Удалить строку из UITableView с помощью NSFetchedResultsController
- 10. UITableView не прокручивается с UISearchBar
- 11. UITableView приклеивается к UISearchBar
- 12. UISearchBar и два UITableView
- 13. uisearchbar + uitableview + nsfetchedresultscontroller
- 14. Как скрыть UITableView, созданный UISearchBar?
- 15. UINavigationController + UITableView + UISearchBar + UISplitViewController
- 16. Удалить из UITableView с помощью NSFetchedResultsController
- 17. Показать UISearchBar, когда UITableView перетаскивается из первой строки
- 18. UISearchBar в UITableView
- 19. UISearchBar прокручивает прокрутку UITableView
- 20. UISearchBar и UITableView
- 21. UISearchBar - toggle UITableView
- 22. UISearchBar + UITableView + UINavigationController вопрос
- 23. Использование UISearchBar без UITableView
- 24. UITableView/UISearchBar возвращает неверные результаты
- 25. UITableView Section выше UISearchBar
- 26. Удалить проблему строки UITableView
- 27. Проблема с UISearchBar и UITableView в iOS7
- 28. UISearchBar появляется на * дне * UITableView
- 29. удалить строки из UITableView вызывает утечку памяти
- 30. Swift 3.0 Невозможно удалить строки из UITableView
Что вы используете в качестве источника данных? Например, с помощью coreData вы можете использовать NSFetchedResultsController для автоматической обработки;) – geo
Я использую обычный NSMutableArray и другой mutalbeArray для filterDataSourse – Egor