我正在使用故事板。我有一个带有一个原型单元格的UitableView。该单元格是“字幕”的样式。我已经将一个从单元格添加到详细的视图中。因此,当用户点击单元格时,它将打开相应的编辑器...所有功能都很好。

现在,我添加了一个UisearchDisplayController和A uisearchbar,该bar实现了代表。效果很好。

但是在搜索结果表中,单元格是“默认”样式的,并且不可敲击。我该怎么做才能让结果表看起来像“未搜索”表的表格?

有帮助吗?

解决方案 2

发现问题...

方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

从表观视图中摘下单元格,在结果情况下,这不是故事板的表观视图,而是searchDisplayController的ResultTableView。

现在,我从故事板中的表观视图中可以看到单元格,现在可以使用。

其他提示

我想为答案#1做出贡献,这是我所做的,它对我有用

在方法中

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

而不是从参数tableview分配单元格

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

直接从视图上的表观视图分配,因此您必须替换此

// UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

有了这个

 UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];

我一直在使用iOS 7.0和Xcode 5.0。我发现搜索显示控制器正在使用与委托视图控制器相同的表图布局。您所要做的就是判断当前的tableview是代表视图控制器的表视图还是搜索显示控制器的tableview。但是记得添加句子

tableView.rowHeight = self.tableView.rowHeight;

在以下代码段中:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
if (tableView == self.searchDisplayController.searchResultsTableView)
{
    tableView.rowHeight = self.tableView.rowHeight;//very important!
    return [self.searchResults count];
}
else
{
    ...
    return ...;
}
}

如果您忘记实现该句子,那么搜索显示的表视图排仅与默认行一样高,这使您认为它看起来不像“未搜索”表。

有一个可能的答案 这里. 。它可能不完全适合您,但是正如我所解释的那样,UISearchDisplayController创建表视图。

检查文档,您可以更好地了解它,但它指出:

您可以使用搜索栏和一个视图控制器初始化搜索显示控制器,负责管理要搜索的原始内容。当用户启动搜索时,搜索显示控制器负责将搜索界面叠加到原始视图控制器的视图上并显示搜索结果。结果显示在搜索显示控制器创建的表视图中。除原始视图控制器外,还有其他四个角色。这些通常都是由同一对象播放的,通常是原始视图控制器本身。

就我而言,uisearchdisplayController使用了正确的单元格类型(自定义),但是单元格的高度是错误的,所以我必须使用

(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

修复它的方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top