我正在構建一個iOS應用程序,其中有一個車輛庫存號列表,我需要搜索特定的應用程序。tableView:numberOfRowsInSection搜索時出錯
我已經實現了UITableView所需的方法,並設置委託和源等,我的桌面視圖出現並完美工作。
的奇數部分是,當我在頂部鍵入任何東西到搜索框(其由提供「的搜索欄和搜索顯示控制器」預先製作的對象)時,該應用程序崩潰:
*終止應用程序由於未捕獲的異常 'NSInvalidArgumentException',原因是: ' - [CarLocateViewController 的tableView:numberOfRowsInSection:]:無法識別的選擇發送到 例如0x757d340'
這是奇怪的,BEC ause我已經實現了tableView:numerOfRowsInSection:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
NSLog(@"Defining rows for table view: %i", allVehicles.count);
return allVehicles.count;
}
而且這對於自己的表視圖是完美的。
我也有搜索方法設置:
-(void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope {
[self.filteredVehicles removeAllObjects];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.name contains[c] %@", searchText];
filteredVehicles = [NSMutableArray arrayWithArray:[allVehicles filteredArrayUsingPredicate:predicate]];
}
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString {
[self filterContentForSearchText:searchString
scope:[[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]];
return YES;
}
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchScope:(NSInteger)searchOption {
// Tells the table data source to reload when scope bar selection changes
[self filterContentForSearchText:self.searchDisplayController.searchBar.text scope:
[[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:searchOption]];
// Return YES to cause the search result table view to be reloaded.
return YES;
}
任何幫助表示讚賞!
這可能是一個愚蠢的問題,但是你的tableview數據源和委託以及'CarLocateViewController'對象內的所需函數是什麼?您提供的代碼並不完全說明這些方法的位置。 – Putz1103
何時以及如何創建所有車輛? –
@ Putz1103 - 這根本不是一個愚蠢的問題;我完全忽略了這一點。我已經在另一個類中爲UITableView設置了我的委託,併爲UISearchBar做了相同的處理,但顯然UISearchBar自動生成的列表自動鎖定到ViewController類。我把所有東西都移到了ViewController中,現在它不會崩潰 - 如果你對此做出回答,我會接受它。我猜這是我閱讀郵件但沒有/真的/閱讀郵件的情況之一。 – malexdev