我試圖用一個UISearchDisplayController與CLGeocode搜索爲用戶類型,用的MKMapView使用。我的視圖控制器只有兩件事 - 與UISearchDisplayController和地圖視圖關聯的UISearchBar。我正在使用Storyboard。使用UISearchViewController沒有底層的UITableView(從故事板)
通常,從基礎表視圖這樣做,會不會有聲明原型細胞,但似乎沒有這樣做,在這裏,因爲我沒有表視圖的方式。所以我創建了一個名爲SearchTableViewCell的UITableViewCell的子類,並帶有關聯的nib。
筆尖包含一個標籤,在該出口連接的:
@interface SearchTableViewCell : UITableViewCell
@property (unsafe_unretained, nonatomic) IBOutlet UILabel *textLabel;
@end
我加載筆尖在viewDidLoad中:
[self.searchDisplayController.searchResultsTableView registerNib:[UINib nibWithNibName:@"SearchTableViewCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"CellIdentifier"];
我得到的數據從CLGeocoder這樣的:
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller -(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString {
[self.geocoder geocodeAddressString:searchString completionHandler:^(NSArray *placemarks, NSError *error) {
self.placemarks = placemarks;
[self.searchDisplayController.searchResultsTableView reloadData];
}];
return NO;
}
而且我的tableview代碼如下所示:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [self.placemarks count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *kCellID = @"CellIdentifier";
SearchTableViewCell *cell = (SearchTableViewCell *)[tableView dequeueReusableCellWithIdentifier:kCellID forIndexPath:indexPath];
CLPlacemark *placemark = self.placemarks[indexPath.row];
NSString *addressString = CFBridgingRelease(CFBridgingRetain(ABCreateStringWithAddressDictionary(placemark.addressDictionary, NO)));
cell.textLabel.text = addressString;
return cell;
}
搜索部分正在工作 - 當我到達cellForRowAtIndexPath時,self.placemarks中有數據。然而,取出一個新的單元格行與異常失敗的第一次,它被稱爲:
'NSUnknownKeyException', reason: '[<NSObject 0x1a840d40> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key textLabel.'
我的細胞對象是標準,適合爲textLabel,但我在錯誤消息覺得這件事NSObject的有 - 是否返回的對象不是SearchTableViewCell?它在IB中配置爲使用正確的類。爲什麼出列方法檢查textLabel?我很確定我有自定義表格單元格之前沒有textLabel字段。
在那裏我已經出了問題有什麼建議?