gpt4 book ai didi

iOS 5 Search Display Controller 和 UITableViewController 的复用

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:21:48 24 4
gpt4 key购买 nike

背景

我有一个 iPhone 应用程序,它在多个地方使用 UITableViewController 子类,每次使用时再次进行子类化。其中一个用途是搜索 Controller 。

@interface TableViewController : UITableViewController
// ...
@interface SearchTableViewController : TableViewController <UISearchDisplayDelegate, UISearchBarDelegate>

在 Storyboard 编辑器中,我在使用 TableViewController 的每个 View 中都有相同的 TableView 、单元格结构和重用标识符。在我使用它的任何地方, Storyboard都会根据我的设计时原型(prototype)为我生成单元格,这样在 tableView:cellForRowAtIndexPath: 方法中我就不必包含 if (cell ==无) 部分。

问题

我做错了什么,我的搜索 Controller 的单元格没有像其他单元格那样由 Storyboard生成。起初,我添加了 if (cell == nil) 位来解决问题,但它导致我的搜索显示空白行。实际上,搜索显示了正确数量的空白行。取消搜索后,结果会从后台出现。这是来自 TableViewController 的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

ModelObject* obj = [self.dataSource modelAtIndex:indexPath.row];
UILabel* name = (UILabel*) [cell viewWithTag:1];
name.text = obj.name;
return cell;
}

我怀疑可能还需要其他详细信息来确定问题,但任何有关可能导致此问题的原因的提示都会有所帮助。谢谢。

最佳答案

如果您使用的是 Storyboard,请选择对象“Search bar with search display controller”并将其放置在您的 View Controller 中(假设是 VC)。然后 Xcode 会自动将搜索栏链接到驻留在 VC 中的搜索显示 Controller 。因此在VC中,可以通过self.searchDisplayController访问搜索显示 Controller 并且您的 VC 应该采用 UISearchBarDelegate、UISearchDisplayDelegate 等协议(protocol)您的搜索栏也可以通过 self.searchDisplayController.searchBar

访问

在 UISearchDisplayDelegate 协议(protocol)中实现相关方法(表格 View 等)。答对了!您的搜索结果将自动显示。

关于iOS 5 Search Display Controller 和 UITableViewController 的复用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10864322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com