滚动搜索结果时UITableView故障

时间:2011-11-01 10:45:35

标签: iphone uitableview ios4 uisearchbar

我有一个带搜索栏的表格。使用搜索栏似乎很好,直到滚动到结果的底部。我会尽力解释。

假设我有一个包含1000个对象的数据表,并在搜索栏中输入“w”。显示以字母“w”开头的25个对象。我点击进入表格,可以向上和向下滚动这25个对象。但是,当我到达底部并尝试滚动到最后一个对象时,位于顶部静止的搜索栏开始向上滚动并消失,显示这些25'w'对象的“重复”表。

我可以将第一张桌子放在屏幕的上半部分,将第二张桌子放在下半部分,然后分别向上和向下滚动。这真的很奇怪。我不知道我应该使用哪些代码,但如果有人有想法,我会很乐意发帖。

滚动到不可搜索表格底部时不会出现此现象。

这是一系列图像,试图澄清问题。 pics

搜索栏回调:

- (void)searchBar:(UISearchBar *)theSearchBar textDidChange:(NSString *)searchText {

    [searchResult removeAllObjects];

    if ([searchText length] > 0) {
        isSearchOn = YES;
        canSelectRow = YES;
        self.tableView.scrollEnabled = YES;
        [self searchTableView];
    }
    else {        
        isSearchOn = NO;
        canSelectRow = YES;
        self.tableView.scrollEnabled = NO;
    }  
    [self.tableView reloadData];
}

- (void) searchTableView {
    NSString *sTemp = nil;
    NSArray *tempSectionArray = nil;    
    NSArray *tempEnglishArray = nil;
    NSString *firstLetter = [searchBar.text substringToIndex:1];

    //--- Only including W
    if ([firstLetter isEqualToString:@"W"] || 
        [firstLetter isEqualToString:@"w"]) {
        tempSectionArray = [NSArray arrayWithArray:[self.listSortByIndex objectAtIndex:23]];
        tempEnglishArray = [NSArray arrayWithArray:[self.listEnglish objectAtIndex:23]];
    }

    for (int i = 0; i < [tempEnglishArray count]; i++) {
        sTemp = [tempEnglishArray objectAtIndex:i];
        NSRange titleResultsRange = [sTemp rangeOfString:searchBar.text options:NSCaseInsensitiveSearch];
        if (titleResultsRange.length > 0)
            [searchResult addObject:[tempSectionArray objectAtIndex:i]];
    }   
}

0 个答案:

没有答案