gpt4 book ai didi

iphone - 如何知道在我的搜索显示 Controller 的搜索中选择的整个表格 View 中的行?

转载 作者:行者123 更新时间:2023-11-29 04:46:59 25 4
gpt4 key购买 nike

正如标题所说,在我的代码中,当我在应用程序中搜索时,会以一种简单的方式发生这种情况:

stations = [barcelona, madrid, valencia, badajoz]

当我输入“ba”时,它显示:

mysearch = [barcelona, badajoz]

我想选择 badajoz,因此程序返回该行是位置 1,而在车站中是位置号 3。

有什么想法吗?

PD:与搜索相关的代码

- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
NSPredicate *resultPredicate = [NSPredicate
predicateWithFormat:@"SELF contains[cd] %@",
searchText];

self.searchResults = [self.allItems filteredArrayUsingPredicate:resultPredicate];
}

#pragma mark - UISearchDisplayController delegate methods
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller
shouldReloadTableForSearchString:(NSString *)searchString
{
[self filterContentForSearchText:searchString
scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
objectAtIndex:[self.searchDisplayController.searchBar
selectedScopeButtonIndex]]];

return YES;
}

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller
shouldReloadTableForSearchScope:(NSInteger)searchOption
{
[self filterContentForSearchText:[self.searchDisplayController.searchBar text]
scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
objectAtIndex:searchOption]];
return YES;
}

编辑:我使用下面的答案编辑了我的代码 - (void)tableView: (UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ NSLog(@"正在推..."); NSUInteger 行 = [indexPath 行];//搜索 View 之前的旧代码

    //index from the search
id searchResult = [searchResults objectAtIndex:row];
int indexForResult = [ListaEstaciones indexOfObject:searchResult];
//more stuff

编辑:现在它适用于这种情况:对于包含所有元素的列表,它搜索得很好,当我开始搜索时,它工作得很好,问题是,当停止搜索并选择所有元素列表中的一行时,它仍然使用索引在之前搜索的项目列表中,发生这种情况是因为在这段代码中我将搜索 bool 变量更改为 YES:

    - (void)filterContentForSearchText:(NSString*)searchText 
scope:(NSString*)scope
{
NSPredicate *resultPredicate = [NSPredicate
predicateWithFormat:@"SELF contains[cd] %@",
searchText];

self.searchResults = [self.allItems filteredArrayUsingPredicate:resultPredicate];
searching = YES;

但是当我返回所有值的列表时,我不知道在哪里将搜索值更改为“否”。有什么建议么?多谢。编辑2:通过此网站解决http://engineeringtheworld.wordpress.com/2011/04/11/detecting-when-clear-is-clicked-in-uisearchbar-x-button/

最佳答案

如果你有一个对象,你可以在数组中找到它的索引。使用顶部的示例:

id searchResult = [mysearch objectAtIndex:1];
int indexForResult = [stations indexOfObject:searchResult];

如果您没有进行搜索,您就不会想要处理这两个语句,因为它们没有意义。要阻止它们被处理,需要将它们放入 if 语句中并检查您是否已进行搜索。

查看错误后,您似乎有一个包含 1160 个对象的数组,而您的代码正在请求对象 2147483647。这显然不存在,因此代码崩溃了。我不完全确定为什么会出现此错误,只有您才能真正回答。使用断点和调试器找出代码哪里出错了。

关于iphone - 如何知道在我的搜索显示 Controller 的搜索中选择的整个表格 View 中的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9489021/

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