Я сделал один образец демо. Как и выбранная печать ячейки после нажатия кнопки «Готово». Он работает нормально.Как удалить данные из массива, когда снимите ячейку в UITableview?
Кодекс
@synthesize arrayContainer,filteredRecipes,myTableView,filtered,selectedRaw;
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.arrayContainer = [[NSMutableArray alloc]initWithObjects:@"One",@"Two",@"Three",@"Four",@"Five",@"Six",@"Seven",@"Eight",@"Nine", nil];
self.selectedRaw = [[NSMutableArray alloc]init];
}
-(IBAction)printSelectedItem:(id)sender
{
NSLog(@"The Selected Items are %@",self.selectedRaw);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if(filtered == YES)
{
return self.filteredRecipes.count;
}
else
{
return self.arrayContainer.count;
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *identifier = @"myCell";
UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:identifier];
if(filtered == YES)
{
cell.textLabel.text = [self.filteredRecipes objectAtIndex:indexPath.row];
}
else
{
cell.textLabel.text = [self.arrayContainer objectAtIndex:indexPath.row];
}
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(nonnull NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
cell.accessoryType = UITableViewCellAccessoryNone;
// NSString *string = [self.selectedRaw objectAtIndex:indexPath.row];
[self.selectedRaw removeObjectAtIndex:indexPath.row];
} else {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
NSString *temp = [self.arrayContainer objectAtIndex:indexPath.row];
[self.selectedRaw addObject:temp];
}
}
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
[searchBar setShowsCancelButton:YES animated:YES];
}
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
if([searchText length] == 0)
{
self.filtered = NO;
}
else
{
self.filtered = YES;
self.filteredRecipes = [[NSArray alloc]init];
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"SELF contains[cd] %@",searchText];
filteredRecipes = [self.arrayContainer filteredArrayUsingPredicate:resultPredicate];
}
[self.myTableView reloadData];
}
Вопрос
-> При печати выбранной строки зрения таблицы, отображается в журнале отлично.
-> Но когда я снял выбранные элементы, это дает мне ошибку.
Пожалуйста, дайте мне решение.
Другой вопрос: когда я искал конкретный элемент (выбранный), он дает мне выбранный элемент отлично, затем я отменю выбор после того, как я отменил поиск, тогда он дает мне снова выбранный элемент, который я снял ранее.
Выход изображения
выбран Raw
Переполнение второго сырья
Для выходного изображения сначала я снял третью строчку, затем я снял флажок. – hd1344
, потому что содержимое вашего массива не совпадает с вашим представлением (количество строк, поэтому вы не должны использовать indexpath.row в качестве основы для удаления объекта по индексу). – Joshua
Если я не ошибаюсь, вы хотите отменить выделение конкретной ячейки когда вы нажимаете на него во второй раз ?? .... – Developer