私はUISearchBarでUITableViewControllerを使用しています。私が前に見たことがないtextDidChange
メソッドで奇妙な警告が出ることを除いて、すべてうまくいくようです。UISearchBar textDidChange creating error:すべてを再利用した後に可視のビューが残っています:{(null)=(null); }
これは私のコードです:
- (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];
}
プログラムをステップ実行することで、私は警告が右textDidChange
の終了前に起こることを発見しました。
There are visible views left after reusing them all: { (null) = (null); }
は誰もがなぜこれが起こっている知っているか、そしてどのようにそれを解決するために:私はタイトルで述べたように、警告がこれですか?
同様のテキストフィールドデリゲートメソッドで同じ問題が発生しました: 'func textField(textField:UITextField、shouldChangeCharactersInRange range:NSRange、replacementString string:String) - > Bool'。これについては、インターネットには情報がないので、このXKCDのcommicは、私が感じて正確にどのように説明しますhttp://static.fjcdn.com/pictures/What+did+you+see_a484fb_4909175.jpg – Losiowaty