我正在建立一个iOS应用程序,我有一个车辆库存号列表,我需要搜索特定的。
我已经为UITableView实现了所需的方法,并设置了委托和源等,我的tableview出现并且运行正常。
奇怪的是,当我在顶部的搜索框中输入任何内容时(由搜索栏和搜索显示控制器'预制对象提供),应用程序崩溃:
* 由于未捕获的异常终止应用' NSInvalidArgumentException',原因:' - [CarLocateViewController tableView:numberOfRowsInSection:]:发送到的无法识别的选择器 实例0x757d340'
这很奇怪,因为我已经实现了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;
}
感谢任何帮助!
答案 0 :(得分:1)
更改评论以回答:
这可能是一个愚蠢的问题,但是你的tableview数据源和委托以及CarLocateViewController对象中所需的函数是什么?您提供的代码并未准确说明这些方法的位置。
答案 1 :(得分:0)
您已分配给DataSource
的类实例未实现UITableViewDataSource
函数。
@interface MyClassController :UIViewController <UITableViewDelegate,UITableViewDataSource>
尝试如下。
myTableView.dataSource = self;
myTableView. delegate = self;