2011-10-20 13 views
0

私は、セルイメージと名前をテキストとして含むテーブルビューを持っています。最上部には検索バーが追加されています。私が検索すると、私は名前の検索を行うことができますが、イメージは同じです。検索時の名前の変更に応じて、画像もどのように変更できますか? このコードは、tableviewデリゲートで、私もいくつかの検索デリゲートメソッドを使用しています。私は名前に関してイメージを整理するために何もしていない。私はそれを実装するのに助けが必要です。問題を見つける - iphone sdk

- (void) searchTableView { 

    NSString *searchText = searchBar.text; 
    NSMutableArray *searchArray = [[NSMutableArray alloc] init]; 


    for (NSString *sTemp in friendsList) 
    { 
     NSRange titleResultsRange = [sTemp rangeOfString:searchText options:NSCaseInsensitiveSearch]; 

     if (titleResultsRange.length > 0) 
      [copyListOfItems addObject:sTemp]; 
    } 

    [searchArray release]; 
    searchArray = nil; 
} 

ありがとう:

if(searching) 
     cell.textLabel.text = [copyListOfItems objectAtIndex:indexPath.row]; 
    else { 

     [cell.imageView setImageWithURL:[NSURL URLWithString:[imageArray objectAtIndex:indexPath.row]] 
        placeholderImage:[UIImage imageNamed:@"defaultPerson.png"]]; 
     cell.textLabel.text = [friendsList objectAtIndex:indexPath.row];   
    } 

は、ここではいくつかのより多くのコードです。

+0

私たちの細胞を作り/更新するコードを投稿してください。 –

+0

あなたのコードを.. ..投稿できますか? – Aravindhan

+0

コードを更新しました – Mithuzz

答えて

1

あなたのセルを正しく更新していないようです。

単純な[myTableView reloadData];が役に立つかもしれませんが、画像ビューをセルに追加する方法を検討したい場合もあります。あなたは、あなたのセルの上に正しく配置されたimageViewsを、削除(/解放/埋め込み)していないかもしれません。 imageViewsは、あなたが特に指示しない限り、これ自体を行わないため、セルを更新するたびにこれを行う必要があります。

あなたの質問をいくつかの有益なコードで更新したとき、あなたの問題に関してこれについてより具体的に説明することができます。


今、あなたとあなたの投稿を編集なかったことがいくつか(の非常に少ない量が)コードは、私はあなたがオブジェクトの新しいリストにあなたのcell.imageViewsを更新していないこのスニペットから見ることができます。

あなたは新しい「copyListOfItems」であなたのUITableViewを更新していますが、あなたのイメージのために同じことが「imageArray」

からの画像はあなたが行う必要がありますされている古いコンテンツの表示が得られていることしませんでしたあなたのイメージのための同様の配列は、テキストで行ったのと同じです。あなたの名前は常に、あなたのイメージに合ったレコードを選ぶときの名前に画像を保存する

if(searching) 
{ 
    cell.textLabel.text = [copyListOfItems objectAtIndex:indexPath.row]; 
    [cell.imageView setImageWithURL:[NSURL URLWithString:[searchedArrayOfImages objectAtIndex:indexPath.row]]; 
} 
else { 

    [cell.imageView setImageWithURL:[NSURL URLWithString:[imageArray objectAtIndex:indexPath.row]] 
       placeholderImage:[UIImage imageNamed:@"defaultPerson.png"]]; 
    cell.textLabel.text = [friendsList objectAtIndex:indexPath.row];   
} 

より良い方法(i.m.o.は)ので、それらのためのNSDictionaryのを作っています。以下のコメントの点で


: あなたが検索するとき、mostlikely textDidChangeデリゲートメソッドでは、あなたはmostlikelyすべての検索マッチのindexrowsを選びます。 "friendlist"からヒットのインデックスを選択して "copyListOfItems"に入れると、同じインデックスを使用して "imageArray"からイメージを取得し、 "searchedArrayOfImages"に配置する必要があります。この方法で、テキスト配列とイメージ配列の両方を同じ方法で構築できます。その後、テーブルビューをリロードすると、 "copyListOfItems"と "searchedArrayOfImages"から同じインデックスを取得し、セルを適切に取り込むことができます。


それはこのようになります:あなたは、このように更新されますセルを検索が完了したら(スニペットに応じて)

- (void) searchTableView 
{ 

    NSString *searchText = searchBar.text; 
    NSMutableArray *searchArray = [[NSMutableArray alloc] init]; 

    int indexCount = 0; //keeps track of which index you are at. 
    for (NSString *sTemp in friendsList) 
    { 
     NSRange titleResultsRange = [sTemp rangeOfString:searchText options:NSCaseInsensitiveSearch]; 

     if (titleResultsRange.length > 0) 
     { 
      [copyListOfItems addObject:sTemp]; //this is your name result 
      [searchedArrayOfImages addObject:[imageArray objectAtIndex:indexCount]]; //adds image that fits with the nameresult to array of searched images 
     } 

     indexCount++; 
    } 

    [searchArray release]; 
    searchArray = nil; 
} 

if(searching) 
{ 
    cell.textLabel.text = [copyListOfItems objectAtIndex:indexPath.row]; 
    [cell.imageView setImageWithURL:[NSURL URLWithString:[searchedArrayOfImages objectAtIndex:indexPath.row]]; 
} 
else 
{ 

    [cell.imageView setImageWithURL:[NSURL URLWithString:[imageArray objectAtIndex:indexPath.row]] 
       placeholderImage:[UIImage imageNamed:@"defaultPerson.png"]]; 
    cell.textLabel.text = [friendsList objectAtIndex:indexPath.row];   
} 
これで十分です

^^幸運。

+0

コード – Mithuzz

+0

を更新しました。あなたの問題は、あなたの細胞の画像の古いコンテンツを使用することです。名前の場合と同じように、イメージの新しい配列を作成する必要があります。そのORは画像を再度検索しますが、それはあなたが使いたい解決策ではありません。 –

+0

私は画像を取得するためのリンクを含む配列を持っています。 (コード内のimageArray)。だから、私は名前配列の変更に関連して配列を更新する必要があると思います。私は正しい?もし私がそうなら、どうすればいいのですか? – Mithuzz

関連する問題