搜索结果tableview即使在过滤表内容工作正常时也不显示其单元格的内容

时间:2014-06-26 18:00:32

标签: iphone uitableview ios7 uisearchbar uisearchdisplaycontroller

我有一个viewcontroller包含由同一个viewcontroller.i管理的多个tableview.i添加搜索到其中一个tableviews ...我添加了搜索栏amd searchisplaycontroller并连接了searchdelegate,searchdatasource,searchbar.etc的出口... image showing the views in vc in storyboard

我有用于过滤表格内容正常工作的代码......

下面是cellforrowatindexpath方法中的代码

 static NSString *simpleTableIdentifier = @"search";

        SearchFieldsCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

        if (cell == nil) {
            cell = [[SearchFieldsCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
        }
        NSDictionary *field=nil;


        if (tableView == self.searchDisplayController.searchResultsTableView) {

            field =  _searchfieldsArray[indexPath.row];
        }
        else{
             field = _fieldsArray[indexPath.row];
        }


        cell.titleLabel.text=field[@"a"];
        cell.subtitleLabel.text=field[@"b"];
        cell.detailLabel.text=field[@"c"];



        cell.flagImage.image=[UIImage imageNamed:@"ic_flag.png"];
         return cell;

但它没有显示tableview的内容...甚至tableviewcell的高度已设置并且在运行时...如果我在调试控制台中给出像po cell.titlelabel.text这样的printobject,它给出的结果如< / p>

<UILabel: 0xc15d500; frame = (70 0; 241 21); text = 'result'; userInteractionEnabled = NO; layer = <CALayer: 0xc15d5b0>>

我进一步发现了代码行  SearchFieldsCell *cell=[tableViewdequeueReusableCellWithIdentifier:simpleTableIdentifier];

完全正常工作,即从故事板加载原型单元格但行

if (cell == nil) {
                cell = [[SearchFieldsCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
            }

返回空的白色单元格,它不会从故事板中的原型单元加载......怎么会发生这种情况......?有人请帮忙......

2 个答案:

答案 0 :(得分:2)

尝试使用自定义单元格类输入强制转换单元格。所以它会初始化&amp;不是空值。

SearchFieldsCell *cell = (SearchFieldsCell *)[tableView dequeueReusableCellWithIdentifier: simpleTableIdentifier];

希望它会对你有帮助。

感谢。

答案 1 :(得分:2)

我知道它不是这样做的...但是经过这么多不同的方式解决方案是创建一个自定义xib文件并使uisearchresultscontrollers tableview注册这个nib文件。工作

 [self.searchDisplayController.searchResultsTableView registerNib:[UINib nibWithNibName:@"SearchFieldsCell"
                                                  bundle:[NSBundle mainBundle]]
            forCellReuseIdentifier:@"Search"];