Я использую контроллер uitableview с uiSearchBar.В методе searchBarSearchButtonClicked я получаю данные и заполняю их в контроллере uitableview:
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
NSDictionary *data = [self getData];
[self.tableData removeAllObjects];
[self.tableData addObjectsFromArray:[data objectForKey:@"myKey"]];
[self.view reloadData];
}
Проблема в том, что я использую пользовательскую ячейку uitableviewcell.Когда я нажимаю кнопку поиска, новые строки возвращаются, но строки, извлеченные во время предыдущего поиска, все еще остаются.
Например, если мой первоначальный поиск возвратил 1 строку результатов, и в этот раз я выполняю дополнительный поиск, возвращая 3строк, первая строка будет из первого поиска, а последующие две строки будут из второго поиска.
Я перезагружаю данные в представлении, поэтому я не уверен, почему ячейки сохраняются.Вот мой метод cellforrowatindexpath, в котором я создаю ячейки:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *MyIdentifier = @"SearchResult";
UITableViewCell *cell = [tableView
dequeueReusableCellWithIdentifier:MyIdentifier];
NSDictionary *data = [self.tableData objectAtIndex:indexPath.row];
if (cell == nil) {
cell = [[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:MyIdentifier] autorelease];
myLabelDetail = [[UILabel alloc] initWithFrame:CGRectMake(152.0, 32.0, 60.0, 5.0)];
myLabelDetail.tag = INSTRUMENT_ID_LABEL_TAG;
myLabelDetail.font = [UIFont systemFontOfSize:14.0];
myLabelDetail.textAlignment = UITextAlignmentLeft;
myLabelDetail.textColor = [UIColor grayColor];
myLabelDetail.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleHeight;
myLabelDetail.text = [data objectForKey:@"title"];
[cell.contentView addSubview:myLabelDetail];
[myLabelDetail release];
cell.imageView.image = [UIImage imageNamed:@"icon"];
cell.textLabel.text = @"Title Text";
cell.detailTextLabel.text = @"My Label: ";
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}else{
myLabelDetail = (UILabel *)[cell.contentView viewWithTag:DETAIL_LABEL_TAG];
}
return cell;
}