我正在使用UISearchDisplayController,能够根据我从服务器检索的某些数据显示包含自定义单元格的表格。
首先,我在UIViewController中设置了UISearchDisplayController。
self.searchController = [[UISearchDisplayController alloc]
initWithSearchBar:self.mySearchBar contentsController:self];
self.searchController.delegate = self;
self.searchController.searchResultsDataSource = self;
self.searchController.searchResultsDelegate = self;
我的UIViewController也实现了UISearchBarDelegate,因此我可以确定搜索何时开始。我设置了一个块,所以当我的api调用返回时,它会被调用,结果字典保存在self.searchResults属性中:
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
// here we make the api call
[api getSomeInfo:searchBar.text complete:^(NSDictionary *json) {
self.searchResults = json;
[self.searchController.searchResultsTableView reloadData];
}];
}
现在,我遇到的问题是在我的UITableViewDataSource方法中,我返回自定义单元格。我的单元格被实例化,但它的IBOutlets永远不会被初始化,所以我无法正确设置它们的内容(文本,图像等):
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (tableView == self.searchController.searchResultsTableView) {
cell = [tableView dequeueReusableCellWithIdentifier:@"SearchResultsCellIndentifier"];
if (cell == nil) {
cell = [[SearchResultsCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
cell.customLabel.text = [self.searchResults objectForKey:@"customText"]; // cell exists but cell.customLabel is nil!!
}
}
为什么内容为零?我的自定义单元格类中是否存在我应该设置内容的位置?
谢谢!
答案 0 :(得分:1)
我认为您的问题是您在创建单元格时使用了变量cellIdentifier
,但在出列时使用了字符串常量。
只需总是重新创建一个单元格即可,但效率不高并导致重大内存泄漏。
首先应根据您所在的表视图以及所需的单元格类型设置cellIdentifier,然后使用该cellIdentifier出列,然后根据需要创建一个新的。