0

アプリケーションを開発していますが、たとえば、セルの 1 つを検索するときに UItableview コードに問題があります。セル 60 に入りたいのですが、検索バーで検索しても cell60 が表示されません。表の最初のセルを教えてください どうすれば修正できますか

AllItems は NSArray で、displayItems は NSMutableArray です

これがコード

- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath



 {


   //Crete an NSSring object that we can use as the eruse identifir
static NSString *CellIdentifier = @"Cell";



//Check to see if wer can reuse a cell from a row that has just roolerd off the screen

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];



if (!cell) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];

}


cell.textLabel.text = [displayItems objectAtIndex:indexPath.row];

//if there are no cells to be reused creater new cell

if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}

//set the text attribute to whatever we are currently looking at in our array


//Return the cell
return cell;
}

これは検索バーのコードです

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{
if ([searchText length] == 0) {
    [displayItems removeAllObjects];
    [displayItems addObjectsFromArray:allItems];


} else {

    //here

    [displayItems removeAllObjects];
    for (NSString * string in allItems){
        NSRange r =[string rangeOfString:searchText options:NSCaseInsensitiveSearch];

        if (r.location != NSNotFound){
            [displayItems addObject:string];
        }
    }
}
[tableView reloadData];


} 

助けてください

4

1 に答える 1

0

あなたがすべきこと:

ヘッダー内:

@property(strong, nonatomic) NSMutableArray* displayItems;
@property(strong, nonatomic) NSArray* allItems;

実装時:

- (void) viewDidLoad {
    ...
    self.addItems = [NSArray arrayWithObjects:@"1", @"2", @"3"];
    self.displayItems = [NSMutableArray array];
}

あなたの方法:

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

    if ([searchText length] == 0) {
        [self.displayItems removeAllObjects];
        [self.displayItems addObjectsFromArray:allItems];

    } else {

        [self.displayItems removeAllObjects];
        for (NSString * string in self.allItems ){
        NSRange r =[string rangeOfString:searchText options:NSCaseInsensitiveSearch];

        if (r.location != NSNotFound){
            [self.displayItems addObject:string];
        }
    }

    [tableView reloadData];

} 

テーブル ビュー データ ソース:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [self.displayItems count];
}


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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
    }


    cell.textLabel.text = [self.displayItems objectAtIndex:indexPath.row];

    return cell;

}
于 2012-10-24T18:33:51.180 に答える