gpt4 book ai didi

ios - 使用 Storyboard 动态原型(prototype) TableViewCell 获取 SearchDisplayController 结果

转载 作者:行者123 更新时间:2023-11-29 03:17:44 25 4
gpt4 key购买 nike

我正在尝试使用 Storyboard Prototype Cell 来显示使用 UISearchBar 的搜索结果的内容。我的常规原型(prototype)单元(当不搜索时)看起来很好,但是,当我搜索时出现以下错误:我用来过滤结果的数组被正确填充...

-[UISearchResultsTableView _configureCellForDisplay:forIndexPath:], /SourceCache/UIKit/UIKit-2903.23/UITableView.m:
my-App*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath:'

创建单元格

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell;

if (cell == nil) {
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
}


if (tableView == self.searchDisplayController.searchResultsTableView) {
UILabel *name = (UILabel *)[cell viewWithTag:101];
name.text = @"test";
} else {
UILabel *name = (UILabel *)[cell viewWithTag:101];
if (_messages.count == 0)
name.text = @"No Messages";
else
name.text = @"username";
}


return cell;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (tableView == self.searchDisplayController.searchResultsTableView)
return [_searchResults count];
else {
return _messages.count;
}
}

最佳答案

这不起作用,因为 TableView 单元格已注册到仅用于主 TableView 。这不适用于您的搜索结果 Controller TableView ,因为 Storyboard将允许这样做。

使用:

[tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

代替

cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

是的,您可以为您的搜索 TableView 注册该类,

[self.searchDisplayController.searchResultsTableView registerClass:[Cell class] forCellReuseIdentifier:CellIdentifier];

但这不会包含您在 Storyboard的自定义单元格中设计的任何内容。您必须以编程方式创建所有内容。

除此之外,您可以通过将当前单元格复制到其中来创建一个 nib 文件。并像这样注册。

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

关于ios - 使用 Storyboard 动态原型(prototype) TableViewCell 获取 SearchDisplayController 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21474268/

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