我在我的项目中添加了一个搜索栏,效果很好。您可以搜索对象(表格视图),关系也可以。但搜索显示不会显示结果名称。
例如:我没有以“x”>>>开头的对象所以没有结果(这是正确的):
但是一个对象以“b”开头,但是虽然我可以点击它并且它正确地向我显示下一个视图(关系),但是没有显示该名称:
这可能是由于我的代码造成的:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *simpleTableIdentifier = @"CarCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
if (tableView == self.searchDisplayController.searchResultsTableView) {
Car *search = [searchResults objectAtIndex:indexPath.row];
UILabel *carNameLabel = (UILabel *)[cell viewWithTag:101];
carNameLabel.text = search.name;
我不知道为什么这不起作用,这对我来说似乎很奇怪。 如果有人可以帮助我,那就太棒了。
更新:完整方法
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *simpleTableIdentifier = @"CarCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
if (tableView == self.searchDisplayController.searchResultsTableView) {
Car *search = [searchResults objectAtIndex:indexPath.row];
UILabel *carNameLabel = (UILabel *)[cell viewWithTag:101];
carNameLabel.text = search.name;
} else {
Car *car = [cars objectAtIndex:indexPath.row];
UIImageView *carImageView = (UIImageView *)[cell viewWithTag:100];
carImageView.image = [UIImage imageNamed:car.thumbnail];
UILabel *carNameLabel = (UILabel *)[cell viewWithTag:101];
carNameLabel.text = car.name;
UILabel *carSpeedLabel = (UILabel *)[cell viewWithTag:102];
carSpeedLabel.text = car.carSpeed;
}
return cell;
}
答案 0 :(得分:0)
如果更新的代码是整个tableView:cellForRowAtIndexPath:
方法,那么您没有将carImageView
,carNameLabel
和carSpeedLabel
视图添加到您的单元格。
初始化新单元格时,需要添加和配置这些子视图,包括相应的标记。您应该将视图添加到cell.contentView
,然后使用[cell.contentView viewWithTag:X]
来检索它们。
答案 1 :(得分:0)
您尝试按UILabel
值设置tag
,但您正在使用股票UITableViewCell
。请尝试以下方法:
if (tableView == self.searchDisplayController.searchResultsTableView) {
Car *search = [searchResults objectAtIndex:indexPath.row];
cell.textLabel.text = search.name;
} else {
Car *car = [cars objectAtIndex:indexPath.row];
cell.imageView.image = [UIImage imageNamed:car.thumbnail];
cell.textLabel.text = car.name;
cell.detailTextLabel.text = car.carSpeed;
}
如果您不想使用普通UIView
内置的标准UITableViewCell
,则必须创建并添加自定义视图(并设置其tag
在您创建新单元格的块中。