【问题标题】:iphone caching issue - UISearchbariphone缓存问题 - UISearchbar
【发布时间】:2011-01-25 18:24:21
【问题描述】:

我有一个使用 UISearchBar 进行动态前向搜索的应用

这就是它的作用..我有 2 个视图; A(列表)和 B(详细)

在视图 A 上,我有一个 UISearchBar,用户可以在其中键入任何内容,并且下面的列表会动态更新(使用复制的数组),即来自外部 Web 服务 API

假设一个场景,用户必须输入“WORD” 他将从 W 开始 所以列表将显示“WA”、“WB”、“WC”、“WD”等 现在他会输入第二个字母 O(所以现在搜索词是“WO”) 所以列表会显示“WO1”、“WO2”、“WO3”等

当用户键入 WO 并单击列表中的选项之一说 WO2 时,他将被带到详细信息 abt WO2 他从那里点击回来......所以再次显示他是WO1,WO2,WO3,......

现在这是我的问题..如果他现在点击 WO1,即使列表显示 WO1、WO2、WO3,......他会被带到有关“WA”的详细信息(即上一个列表中的第一项( i.. 仅在输入“W”时)

所以似乎之前的索引值有一些缓存,似乎...... 你能帮我解决这个问题吗?

我在大多数事情上都使用数组。搜索结果、推送详情等

【问题讨论】:

    标签: iphone objective-c uinavigationbar uisearchbar


    【解决方案1】:

    请提供主列表数据源和 UISearchDisplayController 数据源的代码。

    似乎在tableView:didSelectRowAtIndexPath: 中您得到了错误的对象并将其发送到详细信息控制器。

    无论如何,您必须在列表视图控制器中的 tableViews 之间切换以获得 indexPath 的正确对象:

    - (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    {
        static NSString *CellIdentifier = @"Cell";
    
        UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
        }
    
        if (aTableView == self.searchDisplayController.searchResultsTableView) 
        {
            //  configure cell for object from filtered by keyword list
        }
        else
        {
            //  configure cell for object from unfiltered list
        }   
    }
    
    - (void)tabeView:(UITableVIew *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        UITableViewCell *cell = [self tableView:aTableView cellForRowAtIndexPath:indexPath];
        // get object according to cell and push it to details controller
    }
    

    【讨论】:

    • 您提供的代码与我所拥有的基本一致或几乎完全一致..看到问题是我没有得到错误的详细视图...这是不一致的..所以一个时间我可能会得到正确的详细信息页面和第二次,完全不同。
    • 此问题的源代码会有所帮助。您是如何让对象显示在过滤列表中的?
    • 我现在尝试了 2 种不同的方式,但仍然面临同样的问题; 1. 在 App Delegate 中使用全局 var 2. 使用共享实例(单例) 在这两种情况下,应用程序在列表/详细信息之间的多次来回过程中崩溃......使用我上面所说的 2 种方式填充列表。我现在真的不知道去哪里找。请帮帮我...
    • 您能否编辑您的问题以使源代码更具可读性?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 2018-08-25
    • 2013-10-28
    • 1970-01-01
    相关资源
    最近更新 更多