Używam UITableViewController z UISearchBar. Wszystko wydaje się działać dobrze, z wyjątkiem tego, że otrzymuję dziwne ostrzeżenie w metodzie textDidChange
, której nigdy wcześniej nie widziałem.UISearchBar textDidChange błąd tworzenia: Widoczne są widoki po ponownym użyciu wszystkich: {(null) = (null); }
To jest mój kod:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
[self.searchResults removeAllObjects];
if([searchText isEqualToString:@""]||searchText==nil){
[self.tableView reloadData];
return;
}
for(NSArray *monsterArray in self.monsterArray) {
NSString *name = monsterArray[0];
NSRange r = [[name lowercaseString] rangeOfString:[searchText lowercaseString]];
if(r.location != NSNotFound) {
if(r.location==0) {
[self.searchResults addObject:monsterArray];
}
}
}
[self.tableView reloadData];
}
poprzez intensyfikację w ramach programu, znalazłem, że ostrzeżenie pojawia się tuż przed końcem textDidChange
. Jak już wspomniałem w tytule, ostrzeżenie to:
There are visible views left after reusing them all: { (null) = (null); }
Czy ktoś wie dlaczego tak się dzieje i jak go rozwiązać?
Mam ten sam problem w podobny sposób delegate pole tekstowe: 'func textField (textField: UITextField, shouldChangeCharactersInRange zakres: NSRange, replacementString ciąg: String) -> Bool'. Ponieważ w Internecie nie ma żadnych informacji na ten temat, ten komiks xkcd dokładnie opisuje, jak się czuję: http://static.fjcdn.com/pictures/Dhat+did+you+see_a484fb_4909175.jpg – Losiowaty