2013-08-06 49 views
1

我試圖用一個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字段。

在那裏我已經出了問題有什麼建議?

回答

0

原來,不知怎麼的,我有兩個連接爲textLabel - 一個合適的一到IBOutlet中,另一個文件的所有者。那一定是NSObject如何返回。

固定的是,我在得到一個聲明失敗後 - [NSLayoutConstraint常數]。就在一時興起的時候,我關掉了筆尖的AutoLayout,這似乎並不需要它。它現在有效。